[二叉树遍历|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 把二叉搜索树转换为累加树相关推荐

  1. Leetcode 538. 把二叉搜索树转换为累加树 C++

    Leetcode 538. 把二叉搜索树转换为累加树 题目 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加 ...

  2. LeetCode 538. 把二叉搜索树转换为累加树 | Python

    538. 把二叉搜索树转换为累加树 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/convert-bst-to-greater-tree 题目 给 ...

  3. leetcode - 538. 把二叉搜索树转换为累加树

    给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和.(二叉查找树(Binary Sea ...

  4. leetcode 538. 把二叉搜索树转换为累加树 思考分析

    题目 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和. 提醒一 ...

  5. LeetCode 538. 把二叉搜索树转换为累加树(逆中序 根右左)

    文章目录 1. 题目 2. 逆中序(根右左,降序循环遍历) 1. 题目 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原 ...

  6. LeetCode 538. 把二叉搜索树转换为累加树

    思路:ST的中序遍历就是从小到大,那么反过来就是从大到小,然后通过num累加  int num =0;public TreeNode convertBST(TreeNode root) {if(roo ...

  7. leetcode c++未初始化_LeetCode 力扣官方题解 | 538. 把二叉搜索树转换为累加树

    力扣 538. 把二叉搜索树转换为累加树(点击查看题目) 力扣​leetcode-cn.com 题目描述 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater ...

  8. Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树

    669. 修剪二叉搜索树 题目 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保 ...

  9. LeetCode系列538—把二叉搜索树转换为累加树

    题意 538. 把二叉搜索树转换为累加树 题解 方法一:反序中序遍历 class Solution {private:int sum = 0; public:TreeNode* convertBST( ...

最新文章

  1. MySQL入门(一) MacOS端配置与基本命令
  2. 如何跨服务器复制表中数据
  3. java webinf lib jar_java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序...
  4. BZOJ 2836 树链剖分+线段树
  5. linux系统升级python_Linux系统中的python2.x升级至python3
  6. 计算机多媒体应用软件有超媒体特点吗,《多媒体技术与应用》(本)阶段练习一...
  7. Qt——消息对话框的设计
  8. 图片转Word文档怎么转
  9. 牛客编程巅峰赛S1第12场 王者B-上上下下(DP)
  10. 小学计算机应用到英语课教案,信息技术与小学英语教学有效融合(转载)
  11. 企业为什么要做等保?不做等保有什么后果?
  12. 生活随记-交易难的原因
  13. 将数字金额转换为中文大写金额
  14. nose-report
  15. c语言空循环的作用是什么意思,C语言空循环和无穷循环有的区别
  16. iPhone和Android的WEB应用开发详解
  17. 广西省崇左市谷歌卫星地图下载
  18. 《大话数据结构》1、2数据结构、算法
  19. HUAWEI华为笔记本电脑MateBook 13(WRTB-WFE9L)原装出厂系统恢复原厂系统
  20. 一个年轻董事长给大学生18条很好的建议

热门文章

  1. react动态改变选中不选中_reactjs – 如何避免使用重新选择来计算派生状态时React重新渲染...
  2. php的email函数发送失败,php中mail函数发送邮件失败的解决方法_php技巧
  3. python怎么导出数据_如何用python将数据导出
  4. 京东app html源码_哔哩哔哩源码泄露,看不懂怎么办?
  5. LaTeX中宋体中文无法加粗的情况
  6. 【超直白】算法:斐波那契数列
  7. Python3.x中数据随机重排基本方法
  8. 【英语之夜】遇见--Peter
  9. 火星人谚语系列之五:答案将由我在下一分钟给出(心想事成)
  10. onchange 与 onblur