您的位置:首页 > 其它

538. Convert BST to Greater Tree

2017-07-18 15:12 471 查看
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

题意:

每个节点都加上比它大的,5+13 = 18, 2 + 5 + 13 = 20,13是最大的所以不用加

思路:

后续遍历,先遍历右子树,再遍历左子树 ,然后逐个往前加

后续遍历的结果是:[13,5,2]

13是最大的,不用加(相当于加0) 得到 [13, 5, 2]

5 加上前面的13, 得到 [13, 18, 2]

2 加上前面的18,得到[13, 18, 20]

Java代码:

/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/

public class Solution {
int sum = 0;
public TreeNode convertBST(TreeNode root) {
if(root == null) {
return root;
}
convertBST(root.right);
root.val += sum;
sum = root.val;
convertBST(root.left);
return root;
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: