給定一個二叉搜索樹(Binary Search Tree),把它轉換成為累加樹(Greater Tree),使得每個節點的值是原來的節點值加上所有大于它的節點值之和。
對于每一個點來說,自己的父,和自己父的右子樹都是大于自己的。
所以我們按右中左的順序遍歷,每個遍歷到的值,比它大的值一定都被遍歷過了。
遍歷過程中記錄和就好。
?
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {int add = 0;public TreeNode convertBST(TreeNode root) {if (root == null) return root;convertBST(root.right);root.val += add;add = root.val;convertBST(root.left);return root;}
}