Leetcode学习笔记:#1038. Binary Search Tree to Greater Sum Tree
Given the root of a binary search tree with distinct values, modify it so that every node has a new value equal to the sum of the values of the original tree that are greater than or equal to node.val.
As a reminder, a binary search tree is a tree that satisfies these constraints:
The left subtree of a node contains only nodes with keys less than the node’s key.
The right subtree of a node contains only nodes with keys greater than the node’s key.
Both the left and right subtrees must also be binary search trees.
实现:
int pre = 0;
public TreeNode bstToGst(TreeNode root){
if(root.right != null)
bstToGst(root.right);
pre = root.val = pre + root.val;
if(root.left != null)
bstToGst(root.left);
return root;
}
思路:
反中序遍历。先遍历右子树,把右子树的和先算出来,因为右子树永远比左子树大,所以再遍历左子树,返回root;