【LeetCode笔记】538. 把二叉搜索树转换为累加树(Java、二叉搜索树、递归)
2021/4/16 12:26:14
本文主要是介绍【LeetCode笔记】538. 把二叉搜索树转换为累加树(Java、二叉搜索树、递归),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 题目描述
- 思路 & 代码
题目描述
- 注意是二叉搜索树,可以找出顺序!
- 有点类似中序遍历
思路 & 代码
- 思路:当前结点 root 带着父值一直走到最右边,再一个个累加右值
- 更新 root.val += rightSum,然后以 root.val 作为左子树的父值,递归这个过程
- 左子树递归结束,当前 root 的栈帧返回左子树的值(毕竟这边才是最大值嘛)
- 时间复杂度O(n),相当于遍历每一个结点
/** * 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 { public TreeNode convertBST(TreeNode root) { toConvertBST(root, 0); return root; } // 返回给父结点的赋值(当前已更新子树最左值) int toConvertBST(TreeNode root, int paNum){ // 往右走,一直走到结束,返回父值 if(root == null){ return paNum; } // 先把父值传到最右边 int rightSum = toConvertBST(root.right, paNum); // 当前值等于 当前 + 右子树的最左值 root.val += rightSum; // 把当前和当作父值,传给左结点 int leftSum = toConvertBST(root.left, root.val); // 返回左值 return leftSum; } }
这篇关于【LeetCode笔记】538. 把二叉搜索树转换为累加树(Java、二叉搜索树、递归)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)