LeetCode 538. Convert BST to Greater Tree
538. Convert BST to Greater Tree
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
题解思路:
相当于原本是升序遍历(左根右),现在变成了降序,但是生成这些数的顺序是(右根左,逐渐累加)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { int cur_sum = 0; public: TreeNode* convertBST(TreeNode* root) { travel(root); return root; } //变成了降序,但是生成可以用 右根左 来生成 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); } } };