代码随想录第十八天刷题

class Solution:
    def getMinimumDifference(self, root: Optional[TreeNode]) -> int:
        self.traversal(root)
        return self.result
    
    def __init__(self):
        self.result = float('inf')
        self.pre = None
    
    def traversal(self, cur):
        if cur is None:
            return

        self.traversal(cur.left)
        if self.pre is not None:
            self.result = min(self.result, cur.val - self.pre.val)
        self.pre = cur
        self.traversal(cur.right)
# ---------- BST 最小差值 ----------
# 核心:中序遍历是递增序列
# 最小差值 = 相邻两数的最小差
#
# 步骤:
# 1. 中序遍历
# 2. 记录上一个节点
# 3. 比较当前节点 - 上一个节点
# 4. 更新最小值

# ---------- 什么时候用 self. ----------
# 在递归中:
# 1. 要共享更新结果 → self.result
# 2. 要记住前一个节点 → self.pre
# 3. 要累积某个值 → self.sum
#
# 判断清单:
# 1. 需要在递归调用间保持状态吗?
# 2. 需要被多个递归函数共享吗?
# 3. 需要在递归过程中更新吗?
# 三个“是” → 用 self.

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务