![](https://img-blog.csdnimg.cn/20f312ab4ab34ff68074fd1c218a93e2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5o6J5q-b5a2m5rij,size_20,color_FFFFFF,t_70,g_se,x_16)
思路:
- 根据 二叉搜索树的特点,选择了中序搜索,形成有序数组
- 用双指针法比较前后两个数字的绝对差值
# 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.stack=[]
minvalue=float('inf')
base=float('inf')
def dfs(root):
if not root:
return
dfs(root.left)
update(root.val)
#self.stack.append(root.val)
dfs(root.right)
def update(x):
nonlocal base,minvalue
value=abs(x-base)
base=x
self.stack.append(value)
if minvalue>value:
minvalue=value
dfs(root)
return minvalue
# def upadate(array):
# nonlocal cur,pre,minvalue
# while cur<len(array):
# subtract=abs(array[cur]-array[pre])
# if minvalue>subtract:
# minvalue=subtract
# pre=cur
# cur=cur+1
# def dfs(root):
# nonlocal stack
# if not root:
# return
# dfs(root.left)
# stack.append(root.val)
# dfs(root.right)
# dfs(root)
# upadate(stack)
# return minvalue