news 2026/7/2 5:23:39

LC.538 | 把二叉搜索树转换为累加树 | 树 | 逆向中序遍历(右-根-左)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LC.538 | 把二叉搜索树转换为累加树 | 树 | 逆向中序遍历(右-根-左)

输入:二叉搜索树根节点root(节点值各不相同)。

要求:将其转换为累加树(Greater Sum Tree):
每个节点的新值 = 原树中所有大于等于该节点值的节点值之和。

输出:转换后的树根节点TreeNode*(原地修改后返回root)。


思路:

BST 的中序遍历(左-根-右)是递增序列。
那我们如果想做“后缀和”(从大到小累加),就把遍历方向反过来:

逆向中序遍历:右 -> 根 -> 左
访问顺序从大到小,维护一个滚动累加sum

遍历到某个节点时:

  1. 先走右子树(更大的值先处理)
  2. sum += node->val
  3. node->val = sum(把当前节点改成“>= 自己的总和”)
  4. 再走左子树

补充:
也能用“两次正序中序”做:第一次中序存有序数组并做后缀和映射,第二次再中序回填。
但那是 O(N) 额外空间;本题一趟逆向中序就能原地搞定。


复杂度:

  • 时间复杂度:O(N)
  • 空间复杂度:O(H)(递归栈,H 为树高)

classSolution{public:TreeNode*convertBST(TreeNode*root){sum=0;reverseInorder(root);returnroot;}private:intsum;voidreverseInorder(TreeNode*node){if(node==nullptr)return;reverseInorder(node->right);sum+=node->val;node->val=sum;reverseInorder(node->left);}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/30 23:54:12

基于Springboot企业进销存管理系统【附源码+文档】

💕💕作者: 米罗学长 💕💕个人简介:混迹java圈十余年,精通Java、小程序、数据库等。 💕💕各类成品Java毕设 。javaweb,ssm,springboot等项目&#…

作者头像 李华
网站建设 2026/7/1 18:43:46

基于Springboot社区物资申报系统【附源码+文档】

💕💕作者: 米罗学长 💕💕个人简介:混迹java圈十余年,精通Java、小程序、数据库等。 💕💕各类成品Java毕设 。javaweb,ssm,springboot等项目&#…

作者头像 李华
网站建设 2026/7/1 18:37:22

低功耗设备中LCD显示屏串行接口优化方案

让LCD屏更省电:串行接口的实战优化策略你有没有遇到过这样的情况?设备明明已经进入了低功耗模式,但电流表上的读数就是下不去——一查,原来是LCD显示屏还在“偷偷”耗电。在可穿戴设备、智能传感器或远程医疗终端这类电池供电的产…

作者头像 李华
网站建设 2026/7/1 19:10:54

论文AI改写工具排行榜:8个平台一键降重与智能创作

目前市面上有多款AI论文辅助工具在降重、降低AIGC检测率以及论文写作方面表现突出,通过对8个主流平台的实测数据与用户反馈进行综合评估,这些工具在生成效率、内容准确性和操作便捷性等方面各具优势,为学术研究者提供了从初稿撰写到重复率优化…

作者头像 李华
网站建设 2026/6/25 4:55:29

基于SpringBoot的青年大学习记录管理系统的设计与实现

基于SpringBoot的青年大学习记录管理系统的设计与实现 一、系统总体设计 基于SpringBoot的青年大学习记录管理系统以“规范学习记录、提升组织效率、强化数据监管”为核心目标,解决传统青年大学习管理中记录分散、统计耗时、参与情况不透明等问题,适配高…

作者头像 李华
网站建设 2026/7/1 14:12:29

利用施密特触发器抑制随机噪声:手把手实现电路设计

施密特触发器实战指南:用迟滞电压驯服噪声,打造坚如磐石的数字输入 你有没有遇到过这种情况——一个简单的按键按下,MCU却收到五六个中断?或者传感器信号明明应该稳定,GPIO读回来却频繁跳变?你以为是代码出…

作者头像 李华