首页 > 代码库 > LeetCode:Convert BST to Greater Tree
LeetCode:Convert BST to Greater Tree
538. Convert BST to Greater Tree
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
思路:注意利用BST中序遍历有序的特点,逆序遍历,在加和的时候一定要注意,先遍历右子树,处理当前节点,再遍历左子树。
1 void addGreaterSum(TreeNode*t, int* sum,bool* isfirst) 2 { 3 if (t == NULL) 4 return; 5 addGreaterSum(t->right, sum, isfirst); 6 if (t->right == NULL&&*isfirst) 7 { 8 *isfirst = false; 9 *sum = t->val; 10 } 11 else 12 { 13 int temp = t->val; 14 t->val += *sum; 15 *sum += temp; 16 } 17 18 addGreaterSum(t->left, sum, isfirst); 19 } 20 TreeNode* convertBST(TreeNode* root) 21 { 22 int sum = 0; 23 bool isfirst = true; 24 addGreaterSum(root, &sum, &isfirst); 25 return root; 26 }
LeetCode:Convert BST to Greater Tree
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。