题目难度: 中等
原题链接
今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复
剑指offer2
就能看到该系列当前连载的所有文章了, 记得关注哦~
给定一个二叉搜索树,请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。
提醒一下,二叉搜索树满足下列约束条件:
class Solution:
def convertBST(self, root: TreeNode) -> TreeNode:
# 逆向中序遍历+后缀和
# sm是当前遍历过的所有节点的后缀和
sm = 0
def revInorder(root):
nonlocal sm
if not root:
return
# 逆向中序遍历, 先遍历右子节点
revInorder(root.right)
# 后缀和加上当前节点值, 因为题目要求的是大于等于
sm += root.val
# 将当前节点值更新为后缀和
root.val = sm
revInorder(root.left)
revInorder(root)
return root
大家可以在下面这些地方找到我~
我的 GitHub
我的 Leetcode
我的 CSDN
我的知乎专栏
我的头条号
我的牛客网博客
我的公众号: 算法精选, 欢迎大家扫码关注~