二叉树遍历 LeetCode 1038. 从二叉搜索树到更大和树

1038. 从二叉搜索树到更大和树

给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。

二叉树遍历 LeetCode 1038. 从二叉搜索树到更大和树_第1张图片

从图中可以看出,每个节点是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;
    }
};

你可能感兴趣的:(leetcode,算法,职场和发展)