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 public class Solution { 11 public TreeNode convertBST(TreeNode root) { 12 convertBST(root, 0); 13 return root; 14 } 15 16 private int convertBST(TreeNode node, int sumOfNode) { 17 if (node == null) return sumOfNode; 18 19 int right = convertBST(node.right, sumOfNode); 20 int left = convertBST(node.left, node.val + right); 21 node.val += right; 22 return left; 23 } 24 }