"""
给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。
提醒一下, 二叉搜索树 满足下列约束条件:
节点的左子树仅包含键 小于 节点键的节点。
节点的右子树仅包含键 大于 节点键的节点。
左右子树也必须是二叉搜索树。
"""
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def findbig(self, root, val):
# 递归函数:计算以当前节点为根的子树的值
if not root:
return 0
# 初始化变量 'res' 用于存储节点值的总和
res = 0
# 递归遍历右子树,并将其值加到 'res' 中
res += self.findbig(root.right, val)
# 将当前节点的值加到 'res' 中
res += root.val
# 更新当前节点的值为 'res' 和 'val' 的和
root.val = res + val
# 递归遍历左子树,并将其值加到 'res' 中
res += self.findbig(root.left, root.val)
# 返回以当前节点为根的子树的总值
return res
def bstToGst(self, root):
# 调用辅助函数以更新树中的值
self.findbig(root, 0)
return root
LeetCode刷题日记(1038. 从二叉搜索树到更大和树)
最新推荐文章于 2024-10-14 18:52:56 发布