[二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树
[二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树
1.题目
题目链接
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
例如:
输入: 原始二叉搜索树:5/ \2 13输出: 转换为累加树:18/ \20 13
2.分析
2.1.要干什么
使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
那么现在的问题就是怎么找到“所有比当前结点值更大的结点”。
2.2.一个性质
对于二叉搜索树而言,进行中序遍历,可以得到一个递增序列。
例如,对
5/ \
2 13
进行中序遍历,得到的序列是2,5,13。
2.3.不同点
对于当前遍历到的结点,我们需要将其加上“比其值更大的结点”的值,因此实际上应该先访问值更大的结点,求的是一个降序序列,也就是要将原有中序遍历的顺序给反过来。即:
TreeNode* convertBST(TreeNode* root) {if(root != nullptr) {convertBST(root->right); //遍历右子树//do something... //遍历当前结点,执行累加过程convertBST(root->left); //遍历左子树}return root;
}
而累加的过程可以通过设置一个全局变量来完成。
3.代码
class Solution {public:int sum = 0;TreeNode* convertBST(TreeNode* root) {if(root != nullptr) {convertBST(root->right);sum += root->val;root->val = sum;convertBST(root->left);}return root;}
};
[二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树相关推荐
- Leetcode 538. 把二叉搜索树转换为累加树 C++
Leetcode 538. 把二叉搜索树转换为累加树 题目 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加 ...
- LeetCode 538. 把二叉搜索树转换为累加树 | Python
538. 把二叉搜索树转换为累加树 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/convert-bst-to-greater-tree 题目 给 ...
- leetcode - 538. 把二叉搜索树转换为累加树
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和.(二叉查找树(Binary Sea ...
- leetcode 538. 把二叉搜索树转换为累加树 思考分析
题目 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和. 提醒一 ...
- LeetCode 538. 把二叉搜索树转换为累加树(逆中序 根右左)
文章目录 1. 题目 2. 逆中序(根右左,降序循环遍历) 1. 题目 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原 ...
- LeetCode 538. 把二叉搜索树转换为累加树
思路:ST的中序遍历就是从小到大,那么反过来就是从大到小,然后通过num累加 int num =0;public TreeNode convertBST(TreeNode root) {if(roo ...
- leetcode c++未初始化_LeetCode 力扣官方题解 | 538. 把二叉搜索树转换为累加树
力扣 538. 把二叉搜索树转换为累加树(点击查看题目) 力扣leetcode-cn.com 题目描述 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater ...
- Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树
669. 修剪二叉搜索树 题目 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保 ...
- LeetCode系列538—把二叉搜索树转换为累加树
题意 538. 把二叉搜索树转换为累加树 题解 方法一:反序中序遍历 class Solution {private:int sum = 0; public:TreeNode* convertBST( ...
最新文章
- MySQL入门(一) MacOS端配置与基本命令
- 如何跨服务器复制表中数据
- java webinf lib jar_java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序...
- BZOJ 2836 树链剖分+线段树
- linux系统升级python_Linux系统中的python2.x升级至python3
- 计算机多媒体应用软件有超媒体特点吗,《多媒体技术与应用》(本)阶段练习一...
- Qt——消息对话框的设计
- 图片转Word文档怎么转
- 牛客编程巅峰赛S1第12场 王者B-上上下下(DP)
- 小学计算机应用到英语课教案,信息技术与小学英语教学有效融合(转载)
- 企业为什么要做等保?不做等保有什么后果?
- 生活随记-交易难的原因
- 将数字金额转换为中文大写金额
- nose-report
- c语言空循环的作用是什么意思,C语言空循环和无穷循环有的区别
- iPhone和Android的WEB应用开发详解
- 广西省崇左市谷歌卫星地图下载
- 《大话数据结构》1、2数据结构、算法
- HUAWEI华为笔记本电脑MateBook 13(WRTB-WFE9L)原装出厂系统恢复原厂系统
- 一个年轻董事长给大学生18条很好的建议
热门文章
- react动态改变选中不选中_reactjs – 如何避免使用重新选择来计算派生状态时React重新渲染...
- php的email函数发送失败,php中mail函数发送邮件失败的解决方法_php技巧
- python怎么导出数据_如何用python将数据导出
- 京东app html源码_哔哩哔哩源码泄露,看不懂怎么办?
- LaTeX中宋体中文无法加粗的情况
- 【超直白】算法:斐波那契数列
- Python3.x中数据随机重排基本方法
- 【英语之夜】遇见--Peter
- 火星人谚语系列之五:答案将由我在下一分钟给出(心想事成)
- onchange 与 onblur