您的位置:首页 > 其它

Convert BST to Greater Tree(leetcode)

2017-12-19 15:06 417 查看

Convert BST to Greater Tree

Convert BST to Greater Tree
题目

解决

题目

leetcode题目

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


解决

题目要求是将原二叉树的每个节点的值加上原二叉树中比该节点的值大的数之和,构建一个新的
Greater Tree


例如:下面的BST

5                   18
/   \                /  \
2    13      =>      24   13
/ \                  /  \
1   4                25  22


这道题目是二叉树后序遍历的一个变形。利用一个变量
sum
来记录遍历过节点的值的总和。

/**
* 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 {
public:
TreeNode* convertBST(TreeNode* root) {
int sum = 0;
stack<TreeNode*> tree;
TreeNode* temp = root;
while (!tree.empty() || temp != NULL) {
while (temp != NULL) {
tree.push(temp);
temp = temp->right;
}
temp = tree.top();
tree.pop();
temp->val += sum;
sum = temp->val;
temp = temp->left;
}
return root;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: