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

LeetCode所有大于等于节点的值之和

剑指 Offer II 054. 所有大于等于节点的值之和

给定一个二叉搜索树,请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。

提醒一下,二叉搜索树满足下列约束条件:

节点的左子树仅包含键 小于 节点键的节点。
节点的右子树仅包含键 大于 节点键的节点。
左右子树也必须是二叉搜索树。

在这里插入图片描述

输入:root = [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]

来源:力扣(LeetCode)

二叉搜索树的性质就是左子树小于根节点,右子树大于根节点。
所以它的中序遍历结果就是递增的,而题目里面要求每个节点是大于它的节点和它本身的和,那就得从最大的开始算起,最大的节点的值就是它本身,然后下一个节点再进行累加。

如果就按中序遍历来进行计算,就需要遍历多次,而且需要记录每次遍历的顺序。

所以反序中序遍历即可,让节点值大的先进行计算,这样只需要一遍就行。

class Solution {
    int sum=0;
    public TreeNode convertBST(TreeNode root) {
        if(root!=null){
            convertBST(root.right);
            sum+=root.val;
            root.val = sum;
            convertBST(root.left);
        }
        return root;
    }
}

需要注意的是,每个节点的值修改成sum,sum应该是全局变量。

反序的中序遍历就是先遍历右子树,再是根节点,然后再是左子树。

相关文章:

  • 基站天线交叉极化比测量的不确定度评定
  • RTL8367/N/RB/S/SC系列千兆交换机方案选型参考
  • GO 调用 python3 (基于ubuntu) 实现人脸识别
  • 澳利率攀升,加息步伐将在某个时候放缓
  • AOP实现系统告警
  • Spring Boot集成第三方登录之微博登录
  • 那么我们应该如何优化Youtube的视频呢?
  • 带你秒懂 SSR-服务端渲染
  • MindRecord-Windows下中文路径问题Unexpected error. Failed to open file
  • 基于随机森林实现特征选择降维及回归预测(Matlab代码实现)
  • 链表的奇偶重排
  • 华为ENSP网络设备配置实战2(较为复杂的ospf)
  • 干货 | 精准化测试原理简介与实践探索
  • 本周面试经验总结
  • 第二章 初识Linux Shell
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • css的样式优先级
  • Java,console输出实时的转向GUI textbox
  • learning koa2.x
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue2.x学习三:事件处理生命周期钩子
  • 初识 beanstalkd
  • 后端_MYSQL
  • 记录一下第一次使用npm
  • 每天一个设计模式之命令模式
  • 如何学习JavaEE,项目又该如何做?
  • 深度解析利用ES6进行Promise封装总结
  • 译有关态射的一切
  • Spring Batch JSON 支持
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • !!Dom4j 学习笔记
  • #define用法
  • #includecmath
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (1)bark-ml
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (九)信息融合方式简介
  • (三十五)大数据实战——Superset可视化平台搭建
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)关于多人操作数据的处理策略
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Framework杂记
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .Net8 Blazor 尝鲜
  • .NET面试题(二)
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • /usr/bin/env: node: No such file or directory
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [Android]通过PhoneLookup读取所有电话号码
  • [bzoj1901]: Zju2112 Dynamic Rankings
  • [codevs 1515]跳 【解题报告】
  • [DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]