538.把二叉搜索樹轉換爲累加樹
- 把二叉搜索樹轉換爲累加樹
難度簡單275
給定一個二叉搜索樹(Binary Search Tree),把它轉換成爲累加樹(Greater
Tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如:
輸入: 原始二叉搜索樹: 5 / \ 2 13 輸出: 轉換爲累加樹: 18 / \ 20 13
我們分析一下 原來BST的結果爲 [2,5,13] 轉換後爲[20,18,13] 而[13,18,20]只是他的逆序。 也就是中序遍歷的逆序、累加上sum,因此直接用中序遍歷的逆序即可。先遍歷右子節點 保存當前值,在遍歷左子節點。
int sum = 0;
public TreeNode convertBST(TreeNode root) {
if(root!=null){
convertBST(root.right);
sum += root.val;
root.val = sum;
convertBST(root.left);
}
return root;
}