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;
    }
}
相关推荐
景同学14 小时前
把 AI 用到线上运维:可行、有效,前提是喂足信息——一次 Full GC 排障实录
java·人工智能·后端
C++、Java和Python的菜鸟15 小时前
第7章 后端Web实战(Tlias系统)
java
憧憬成为java架构高手的小白15 小时前
黑马八股--spring框架学习
java·学习·spring
玖玥拾16 小时前
LeetCode 26 删除有序数组中的重复项
算法·leetcode
唐青枫16 小时前
Java Picocli 实战详解:用注解写出好用的命令行工具
java
X-⃢_⃢-X16 小时前
四、OpenFeign远程调用
java·微服务·springboot·springcloud
减瓦16 小时前
深入 Quarkus:云原生时代 Java 的重生之路
java·开发语言·云原生
杨运交16 小时前
[053][核心模块]Java枚举缓存与ORM集成实践
java·开发语言·缓存
繁星蓝雨17 小时前
C++设计原理——异常处理
java·c++·异常处理·noexcept·throw·try catch
BerrySen17817 小时前
一个Java项目改成AI流程后,最难的部分完全变了
java·大数据·人工智能·可观测性·大模型应用开发·工程思维