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

【LeetCode】【算法】538. 把二叉搜索树转换为累加树

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

题目

给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。
提醒一下,二叉搜索树满足下列约束条件:
节点的左子树仅包含键 小于 节点键的节点。
节点的右子树仅包含键 大于 节点键的节点。
左右子树也必须是二叉搜索树。

思路

dfs
题目有点懵,看了题解大概意思就是右中左做个求和,那就比较容易了,直接不断向右递归,然后逐层向上求和就可以

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    private int s = 0;
    public TreeNode convertBST(TreeNode root) {
        dfs(root);
        return root;
    }

    private void dfs(TreeNode node) {
        if (node == null) {
            return;
        }
        dfs(node.right);
        s += node.val;
        node.val = s;
        dfs(node.left);
    }
}

http://www.kler.cn/a/394364.html

相关文章:

  • 【Java基础-26.1】Java中的方法重载与方法重写:区别与使用场景
  • 在MySQL 主库上进行自动清理 purged gtid 时,会等待 binlog复制到从库吗
  • EMS(energy managment system)从0到1
  • [Android]按下扫描键时启动一个线程来执行某些操作
  • MacOS M3源代码编译Qt6.8.1
  • C++23新特性解析:[[assume]]属性
  • 【IC每日一题:IC常用模块--RR/handshake/gray2bin】
  • SSH是 struts+spring+hibernate集成框架
  • 政务数据治理专栏开搞!
  • 浏览器是加载ES6模块的?
  • 探秘 RPC:揭开远程过程调用的实现原理
  • QTcpSocket 服务端和客户端
  • 深入理解BERT模型配置:BertConfig类详解
  • 大数据学习14之Scala面向对象--至简原则
  • uniapp中webview全屏不显示导航栏解决方案
  • 【SSL-RL】自监督强化学习: 好奇心驱动探索 (CDE)算法
  • Android OpenGL ES详解——几何着色器
  • LeetCode39:组合总和
  • UE5-----MenuSystem
  • Python教程笔记(2)
  • hive 统计各项目下排名前5的问题种类
  • 自动驾驶合集(更新中)
  • css3D变换用法
  • Java中的排序算法:探索与比较
  • 昇思大模型平台打卡体验活动:项目5基于MindSpore实现Transformer机器翻译
  • MacOS 本地生成SSH key并关联Github