剑指Offer专项突破版(54)—— 所有大于等于节点的值之和

题目

剑指 Offer II 054. 所有大于等于节点的值之和

在这里插入图片描述

思路

由于需要将所有大于每个节点n的节点和sum都加到n

考虑用中序遍历的反向顺序:右,中,左的形式遍历

因为这样当遍历到某个节点时,所有大于该节点的节点都遍历过了,可以收集这些遍历过的节点的和

代码

用全局变量sum记录所有之前节点的和

遍历到当前节点root时,将sum加到root.val上,再将原始的root.val加到sum

private  int sum;

public TreeNode convertBST(TreeNode root) {
    process(root);
    return root;
}

private  void process(TreeNode root) {
    if (root == null) {
        return;
    }

    process(root.right);
    int originRoot = root.val;
    root.val += sum;
    sum += originRoot;
    process(root.left);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值