您的位置:首页 > 其它

LintCode-Convert BST to Greater Tree

2017-05-18 17:52 519 查看
题目描述:

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.

样例:

Given a binary search Tree `{5,2,3}`:
5
/   \
2     13


Return the root of new tree
18
/   \
20     13

做题思路:

利用自身函数的递归调用,从右子树开始,用遍历右根左的方法,赋值给sum加和,更新sum,再把sum赋值给根节点,更新根节点的值,根节点与左子树上的节点,根据遍历和递归,依次改变值,并返回该树的根节点。

关键代码:

class Solution {
public:
/**
* @param root the root of binary tree
* @return the new root
*/
int sum=0;
TreeNode* convertBST(TreeNode* root) {
// Write your code here
if(root==NULL) return NULL;
convertBST(root->right);
root->val+=sum;
sum=root->val;
convertBST(root->left);
return root;
}
};


做题感想:这题想了好久,想出了好几种思路,但是会想不会写代码,所以上网搜了搜,这种算法便于看懂,更简洁。利用自身函数递归调用,来完成算法实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: