解法的关键在于应该按照节点值降序遍历所有节点,同时记录我们已经遍历过的节点值的和,并把这个和加到当前节点的值中。这种遍历树的方法被称作 反序中序遍历
Example:
Input: The root of a Binary Search Tree like this:
5
/ \
2 13
Output: The root of a Greater Tree like this:
18
/ \
20 13
class Solution {
//想法:先遍历出右子树,加到node上,在遍历左子树
//加的操作: sum+=root.val; root.val=sum;
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;
}
}