给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
题解思路
二叉搜索树的中序遍历的反序是一个降序数组,因此只需用一个sum记录到当前节点为止的所有数组和,并把这个值更新到二叉树的root节点即可,这样每个节点存的值就是原来节点值加上所有大于它节点的值之和
实现代码
class Solution {
int sum = 0;
public TreeNode convertBST(TreeNode root) {
if(root == null){
return null;
}
convertBST(root.right);
sum += root.val;
root.val = sum;
convertBST(root.left);
return root;
}
}