题目描述:
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思路:
中序遍历
代码:
class Solution {
public:
TreeNode* convertBST(TreeNode* root) {
if (root==NULL)
return NULL;
vector<TreeNode*> res;
inorder(root,res);
int n=res.size();
for (int i=n-2; i>=0; i--)
(res[i])->val=(res[i])->val+(res[i+1])->val;
return root;
}
void inorder(TreeNode* node, vector<TreeNode*>& res)
{
if (node==NULL)
return;
inorder(node->left,res);
res.push_back(node);
inorder(node->right,res);
}
};