题目链接:https://leetcode.com/problems/binary-search-tree-to-greater-sum-tree/
题面:
1038. Binary Search Tree to Greater Sum Tree
Medium
14918FavoriteShare
Given the root of a binary search tree with distinct values, modify it so that every node
has a new value equal to the sum of the values of the original tree that are greater than or equal to node.val
.
As a reminder, a binary search tree is a tree that satisfies these constraints:
Example 1:
Input: [4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
Output: [30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]
Note:
1
and 100
.0
and 100
.题解:
仔细观察这棵树,实际上是一个先右节点,再当前节点,再左节点的“中序”遍历顺序,即可满足要求。
没做好的一点是用了一个外面的变量sum,其实应该是可以不用的。
代码:
class Solution {
int sum=0;
public:
TreeNode* bstToGst(TreeNode* root) {
if(root->right)
{
root->right=bstToGst(root->right);
}
sum+=root->val;
root->val=sum;
if(root->left)
{
root->left=bstToGst(root->left);
}
return root;
}
};