Java 求解如何把二叉搜索树转换为累加树
作者:南淮北安 时间:2021-11-19 14:09:54
一、题目
给出二叉搜索树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。
提醒一下,二叉搜索树满足下列约束条件:
节点的左子树仅包含键 小于 节点键的节点。
节点的右子树仅包含键 大于 节点键的节点。
左右子树也必须是二叉搜索树。
二、题解
观察示例图发现,树的遍历顺序为右,中,左的顺序,每个节点的值,是按照这个顺序累加的状态
由于是需要累加,所以需要pre指针记录当前遍历节点cur的前一个节点,方便累加
(1)确定递归函数及返回值
题目需要遍历整棵树,同时需要定义一个全局变量 pre,用来保存 cur节点的前一个节点的数值
(2)确定递归终止条件
遇到空就终止
(3)确定单层递归的逻辑
遍历的顺序,右,中,左
三、代码
class Solution {
// 记录前驱节点
int pre = 0;
public TreeNode convertBST(TreeNode root) {
// 空节点终止
if (root == null) {
return root;
}
// 遍历顺序:右,中,左
convertBST(root.right);
root.val += pre;
pre = root.val;
convertBST(root.left);
return root;
}
}
四、总结
观察示例节点的规律,需要记录上个节点的情况,注意引入前驱节点pre
来源:https://blog.csdn.net/nanhuaibeian/article/details/121096863
标签:Java,二叉搜索树,累加树
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
flutter material widget组件之信息展示组件使用详解
2023-06-22 08:45:35
java中初始化MediaRecorder的实现方法
2023-11-29 03:54:52
Spring boot集成Mybatis的方法教程
2023-11-25 06:20:41
![](https://img.aspxhome.com/file/2023/2/59852_0s.png)
MyBatis-Plus实现分页的方法使用详解
2023-02-14 18:22:16
![](https://img.aspxhome.com/file/2023/6/60026_0s.png)
java多线程加锁以及Condition类的使用实例解析
2023-08-07 07:25:30
![](https://img.aspxhome.com/file/2023/3/57713_0s.png)
教你用Java在个人电脑上实现微信扫码支付
2023-07-22 20:52:15
![](https://img.aspxhome.com/file/2023/2/57722_0s.png)
关于Java中的IO流总结(推荐)
2023-08-23 18:13:56
![](https://img.aspxhome.com/file/2023/1/58191_0s.jpg)
Maven学习----Maven安装与环境变量配置教程
2021-12-04 08:20:25
![](https://img.aspxhome.com/file/2023/8/60678_0s.png)
C语言malloc分配问题详解
2023-07-22 05:10:34
spring validation多层对象校验教程
2023-11-27 15:17:49
Java基于Tcp的基础聊天功能实例
2023-11-25 05:26:56
java中fork-join的原理解析
2023-12-13 08:49:16
![](https://img.aspxhome.com/file/2023/8/59788_0s.jpg)
在IDEA里gradle配置和使用的方法步骤
2023-11-23 16:07:58
![](https://img.aspxhome.com/file/2023/1/59851_0s.png)
Java中JDBC连接数据库详解
2023-08-10 16:57:18
![](https://img.aspxhome.com/file/2023/2/58162_0s.png)
springboot整合token的实现代码
2023-11-10 19:02:03
Java8深入学习之熟透Optional
2023-08-24 21:27:54
详解Java包装类及自动装箱拆箱
2023-11-14 21:13:23
C# 一个WCF简单实例
2023-07-12 20:53:43
![](https://img.aspxhome.com/file/2023/5/66125_0s.jpg)
Java数据结构与算法之循环队列的实现
2023-11-02 11:51:29
![](https://img.aspxhome.com/file/2023/3/58873_0s.gif)
springboot @Async 注解如何实现方法异步
2023-11-18 18:16:03