描述
给定二叉搜索树(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
if(root==null){
return null;
}
root.right=convertBST(root.right);
sum+=root.val;
root.val=sum;
root.left=convertBST(root.left);
return root;
}
}
补充说明
参照网上其他代码。其实有点没想好,但是按程序走一下发现是对的,唉你说气人不!!