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; } };
相关文章推荐
- 算法分析与设计——LeetCode Problem.538 Convert BST to Greater Tree
- LeetCode之Convert BST to Greater Tree(Kotlin)
- LeetCode - 538 - Convert BST to Greater Tree
- LeetCode 538----Convert BST to Greater Tree
- leetcode: Convert BST to Greater Tree
- LeetCode Convert BST to Greater Tree
- LeetCode: Convert BST to Greater Tree
- Leetcode | Convert BST to Greater Tree
- LeetCode-538 Convert BST to Greater Tree
- leetcode(538):Convert BST to Greater Tree
- leetcode 538 Convert BST to Greater Tree C++
- Leetcode 538:Convert BST to Greater Tree
- LeetCode Convert BST to Greater Tree
- leetcode[Convert BST to Greater Tree]//待整理多种解法
- leetcode(538). Convert BST to Greater Tree
- [LeetCode] Convert BST to Greater Tree 将二叉搜索树BST转为较大树
- LeetCode 538 Convert BST to Greater Tree(二叉树的右中左遍历)
- lintcode——Convert BST to Greater Tree
- Convert BST to Greater Tree
- 【Leetcode】Convert Sorted List to Binary Search Tree (BST)