661 · 把二叉搜索树转化成更大的树
描述
给定二叉搜索树(BST),将其转换为更大的树,使原始BST上每个节点的值都更改为在原始树中大于等于该节点值的节点值之和(包括该节点)。
样例
样例1:
输入 : {5,2,13}
5
/
2 13
输出 : {18,20,13}
18
/
20 13
样例2:
输入 : {5,3,15}
5
/
3 15
输出 : {20,23,15}
20
/
23 15
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: the root of binary tree
* @return: the new root
*/
int sum = 0 ;
public TreeNode convertBST(TreeNode root) {
// write your code here
dfs(root) ;
return root ;
}
public void dfs(TreeNode cur){
if(cur == null){
return ;
}
dfs(cur.right) ;
sum = sum + cur.val ;
cur.val = sum ;
dfs(cur.left) ;
}
}
本文介绍了一种算法,将二叉搜索树转化为更大的树,即每个节点的值更新为树中所有大于等于该节点值的节点值之和。通过深度优先遍历的方法实现,先访问右子树再访问左子树,确保从最大值开始递减更新。
289

被折叠的 条评论
为什么被折叠?



