Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys greater than the original key in BST.
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
思路:中序遍历;然后关键点在于用了一个全局变量;
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 class Solution{ 11 private int sum = 0; 12 public TreeNode convertBST(TreeNode root) { 13 helper(root); 14 return root; 15 } 16 public void helper(TreeNode root){ 17 if (root!=null){ 18 helper(root.right); 19 root.val+=sum; 20 sum = root.val; 21 helper(root.left); 22 } 23 } 24 }