給定一個二叉搜索樹(Binary Search Tree),把它轉換成爲累加樹(Greater Tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。
例如:
輸入: 二叉搜索樹:
5
/ \
2 13
輸出: 轉換爲累加樹:
18
/ \
20 13
中序遍歷倒過來搞起!
class Solution {
int pre = 0;
public void dfs(TreeNode root){
if(root != null){
dfs(root.right);
root.val = pre + root.val;
pre = root.val;
dfs(root.left);
}
}
public TreeNode convertBST(TreeNode root) {
dfs(root);
return root;
}
}