因为二叉搜索树的中序遍历结果为升序,所以在中序遍历的过程中,使用一个变量记录上一个节点的值,并记录当前节点与上一个节点的差的最小值即可。
# 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 Solution:
def getMinimumDifference(self, root: TreeNode) -> int:
self.pre = -1
self.res = 100001
def dfs(root):
if not root:
return
dfs(root.left)
if self.pre == -1:
self.pre = root.val
else:
self.res = min(self.res, root.val-self.pre)
self.pre = root.val
dfs(root.right)
dfs(root)
return self.res