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
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)
它或者是一棵空树,
或者是具有下列性质的二叉树:
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
它的左、右子树也分别为二叉排序树。
public TreeNode ConvertBST(TreeNode root) { if (root == null) { return null; } int sum = 0; Chuck(root,ref sum); return root; } private void Chuck(TreeNode node, ref int sum) { if (node == null) { return; } Chuck(node.right, ref sum); sum = sum + node.val; node.val = sum; Chuck(node.left, ref sum); }