Java | Leetcode Java题解之第538题把二叉搜索树转换为累加树

题目:

题解:

java 复制代码
class Solution {
    public TreeNode convertBST(TreeNode root) {
        int sum = 0;
        TreeNode node = root;

        while (node != null) {
            if (node.right == null) {
                sum += node.val;
                node.val = sum;
                node = node.left;
            } else {
                TreeNode succ = getSuccessor(node);
                if (succ.left == null) {
                    succ.left = node;
                    node = node.right;
                } else {
                    succ.left = null;
                    sum += node.val;
                    node.val = sum;
                    node = node.left;
                }
            }
        }

        return root;
    }

    public TreeNode getSuccessor(TreeNode node) {
        TreeNode succ = node.right;
        while (succ.left != null && succ.left != node) {
            succ = succ.left;
        }
        return succ;
    }
}
相关推荐
马猴烧酒.12 分钟前
【JAVA数据传输】Java 数据传输与转换详解笔记
java·数据库·笔记·tomcat·mybatis
爱编码的傅同学14 分钟前
【常见锁的概念】死锁的产生与避免
java·开发语言
圣保罗的大教堂29 分钟前
leetcode 3650. 边反转的最小路径总成本 中等
leetcode
rabbit_pro41 分钟前
SpringBoot3使用PostGis+GeoTools整合MybatisPlus
java·spring
望眼欲穿的程序猿1 小时前
Ai8051U+DHT11温湿度!
java·开发语言
一只大马猴呀1 小时前
IntelliJ IDEA 中启动项目不显示端口号
java·ide·intellij-idea
Hx_Ma162 小时前
Map集合的5种遍历方式
java·前端·javascript
小手cool2 小时前
Java 列表中查找最小值和最大值最有效率的方法
java
惊讶的猫2 小时前
多线程同步问题及解决
java·开发语言·jvm
wfsm2 小时前
工厂模式创建动态代理实现类
java·开发语言