把所有权值大于等于当前节点的值累加到当前节点上

可以先考虑一个数组的情况,把右边的数字全部加到当前数字上。 后缀和?加完后更新 sum

Untitled

对于一棵树,我们 反向中序遍历 和上面等价

class Solution {
public:
    TreeNode* convertBST(TreeNode* root) {
        dfs(root);
        return root;
    }

    int sum = 0;
    void dfs(TreeNode* root) {
        if (!root) return;
        dfs(root->right);
        // (invert) inorder
        sum += root->val;
        root->val = sum;
        dfs(root->left);
    }
};