当前位置: 首页 > news >正文

代码随想录 538. 把二叉搜索树转换为累加树

题目
给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。
提醒一下,二叉搜索树满足下列约束条件:
节点的左子树仅包含键 小于 节点键的节点。
节点的右子树仅包含键 大于 节点键的节点。
左右子树也必须是二叉搜索树。
注意:本题和 1038: https://leetcode-cn.com/problems/binary-search-tree-to-greater-sum-tree/ 相同

示例 1:
在这里插入图片描述
输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]
示例 2:
输入:root = [0,null,1]
输出:[1,null,1]
示例 3:
输入:root = [1,0,2]
输出:[3,3,2]
示例 4:
输入:root = [3,2,4,1]
输出:[7,9,4,10]
提示:
树中的节点数介于 0 和 104 之间。
每个节点的值介于 -104 和 104 之间。
树中的所有值 互不相同 。
给定的树为二叉搜索树。

解题思路
从示例中可知,累加树是从最右下角出发,逐渐相加变大,由此想到,右->中->左的顺序遍历二叉搜索树,在单层逻辑里累加节点的值。定义pre为上一个节点的值。

代码实现

class Solution {
public:TreeNode* convertBST(TreeNode* root) {pre=0;traserval(root);return root;}private:int pre=0;void traserval(TreeNode* cur) {if (cur==nullptr) return;traserval(cur->right);cur->val += pre;pre=cur->val;traserval(cur->left);}
};
http://www.lryc.cn/news/337936.html

相关文章:

  • JavaWeb--前端--01HTML和CSS
  • Oracle SQL中的DECODE函数与NVL函数:区别与应用场景详析
  • 算法设计与分析实验报告c++实现(N皇后问题、卫兵布置问题、求解填字游戏问题、图的m着色问题)
  • 深入探索Linux中的libgdbus:GDBus库的应用和实现
  • MacOS下Qt 5开发环境安装与配置
  • jquery 实现倒计时
  • MYSQL 5.7重置root密码
  • 博客永久链接与计数
  • 基于 RisingWave 和 ScyllaDB 构建事件驱动应用
  • mysql8.0高可用集群架构实战
  • GRE/MGRE详解
  • 蓝桥杯(填空题)
  • vim快捷指令
  • LINUX 下IPTABLES配置详解
  • CentOS 网卡ifcfg-eth0 ping不通外网(www.baidu.com)
  • 【C++】类和对象②(类的默认成员函数:构造函数 | 析构函数)
  • 【ZZULIOJ】1063: 最大公约与最小公倍(Java)
  • 遍历列举俄罗斯方块的所有形状
  • 将Visio绘图导出PDF文件,使其自适应大小,并去掉导入Latex的边框显示
  • android支付宝接入流程
  • Mac 下 Python+Selenium 自动上传西瓜视频
  • 六:ReentrantLock —— 可重入锁
  • 一种驱动器的功能安全架构介绍
  • 紫光展锐T610平台_4G安卓核心板方案定制开发
  • C++11 设计模式4. 抽象工厂(Abstract Factory)模式
  • 第8周 Python面向对象编程刷题
  • 【学习心得】神经网络知识中的符号解释②
  • Igh related:Small Bug And Notes Record.
  • 【QT入门】Qt自定义控件与样式设计之qss介绍(Qt style sheet)
  • [ LeetCode ] 题刷刷(Python)-第49题:字母异位词分组