Convert BST to Greater Tree
2017-05-20 22:26
316 查看
问题描述:
Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changedto the original key plus sum of all keys greater than the original key in BST.
样例:
Given a binary search Tree `{5,2,3}`:5 / \ 2 13
Return the root of new tree
18 / \ 20 13
解题思路:
二叉排序树按中序遍历的先右后左得到的数组是从大到小的排列的,正好变换之后就是每一元素加上前面的元素的和。用了两次得中序遍历,第一次得到数组,处理后在重新更改二叉树。代码:
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { public: /** * @param root the root of binary tree * @return the new root */ vector<int>tree; void InorderTraversal(TreeNode *root) { if (root== NULL)return ; InorderTraversal(root->right); tree.push_back(root->val); InorderTraversal(root->left); } int k=0; void InorderTraversal1(TreeNode *root) { if (root== NULL)return ; InorderTraversal1(root->right); root->val=tree[k];k++; InorderTraversal1(root->left); } TreeNode* convertBST(TreeNode* root) { // Write your code here InorderTraversal(root); for(int i=1;i<tree.size();i++){ tree[i]=tree[i]+tree[i-1]; } InorderTraversal1(root); return root; } };
感想:
方法虽然很简单但是时间效率太低了 需要两次遍历才能得到结果。
相关文章推荐
- Convert BST to Greater Tree
- Convert BST to Greater Tree-LintCode
- LeetCode.538 Convert BST to Greater Tree
- Convert BST to Greater Tree
- Convert BST to Greater Tree
- 538. Convert BST to Greater Tree
- Convert BST to Greater Tree
- leetcode 538 Convert BST to Greater Tree C++
- Convert BST to Greater Tree(leetcode)
- LeetCode Convert BST to Greater Tree
- 538. Convert BST to Greater Tree
- 538. Convert BST to Greater Tree
- 538. Convert BST to Greater Tree
- Convert BST to Greater Tree
- Convert BST to Greater Tree
- Convert BST to Greater Tree
- 538. Convert BST to Greater Tree
- Leetcode | Convert BST to Greater Tree
- 538. Convert BST to Greater Tree
- 538. Convert BST to Greater Tree