1038. 从二叉搜索树到更大和树
给定一个二叉搜索树 root
(BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。
从图中可以看出,每个节点是BST右中左遍历时,遍历到的节点的值加上之前所有节点的值。
在遍历时可以使用一个全局变量,表示之前所有节点的值,并维护这个变量。
class Solution {
public:
int cur;
void dfs(TreeNode *root){
if(root==NULL)return;
if(root->right)dfs(root->right);
root->val=root->val+cur;
cur=root->val;
if(root->left)dfs(root->left);
}
TreeNode* bstToGst(TreeNode* root) {
cur=0;
dfs(root);
return root;
}
};