Description
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
Solution 1(C++)
class Solution {
private:
int cur_sum = 0;
public:
void travel(TreeNode* root){
if (!root) return;
if (root->right) travel(root->right);
root->val = (cur_sum += root->val);
if (root->left) travel(root->left);
}
TreeNode* convertBST(TreeNode* root) {
travel(root);
return root;
}
};
算法分析
这道题我也不想找那么多其他的算法了,就这一个,希望好好记住。毕竟这道题也没做出来,真的蠢。
程序分析
略。