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.