LeetCode:Convert BST to Greater Tree
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode - Convert BST to Greater Tree
LeetCode:Convert BST to Greater Tree
LeetCode: Convert BST to Greater Tree
LeetCode Convert a Number to Hexadecimal