1.问题

1038. 从二叉搜索树到更大和树 - 力扣(LeetCode)

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

提醒一下, 二叉搜索树 满足下列约束条件:

  • 节点的左子树仅包含键 小于 节点键的节点。
  • 节点的右子树仅包含键 大于 节点键的节点。
  • 左右子树也必须是二叉搜索树。

 

示例 1:

输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]

2.思路

        从后往前累加树的节点,根据题目要求,按照右中左的顺序遍历二叉搜索树,使用一个变量记录前一个节点的值进行累加即可。

3.代码实现

    int pre = 0;

    void traversal(TreeNode* root){
        if(root==nullptr) return ;

        traversal(root->right);

        root->val+=pre;

        pre = root->val;

        traversal(root->left);
    }

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐