題目描述:
給定一個(gè)二叉搜索樹(shù)(Binary Search Tree),把它轉(zhuǎn)換成為累加樹(shù)(Greater Tree),使得每個(gè)節(jié)點(diǎn)的值是原來(lái)的節(jié)點(diǎn)值加上所有大于它的節(jié)點(diǎn)值之和。
示例:
輸入: 原始二叉搜索樹(shù):
5
/ \
2 13
輸出: 轉(zhuǎn)換為累加樹(shù):
18
/ \
20 13
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/convert-bst-to-greater-tree
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
Java代碼:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private int sum = 0;
public TreeNode convertBST(TreeNode root) {
traversal(root);
return root;
}
public void traversal(TreeNode root) {
if(root != null) {
traversal(root.right);
sum += root.val;
root.val = sum;
traversal(root.left);
}
}
}