目录
一、题目
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
二、示例
示例:
输入:
1
\
3
/
2输出:
1解释:
最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
三、思路
二叉搜索树的中序遍历是非递减的,因此,我们可以先中序遍历二叉搜索树,再计算出相邻两数的差值即可。
四、代码
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def getMinimumDifference(self, root: TreeNode):
res = []
def Traverse(node: TreeNode):
if node == None:
return
Traverse(node.left)
res.append(node.val)
Traverse(node.right)
Traverse(root)
if len(res) == 0:
ans = 0
elif len(res) == 1:
ans = res[0]
else:
ans = res[1] - res[0]
for i in range(len(res) - 1):
if res[i + 1] - res[i] <= ans:
ans = res[i + 1] - res[i]
return ans
if __name__ == '__main__':
root = TreeNode(1)
root.right = TreeNode(3)
root.right.left = TreeNode(2)
s = Solution()
ans = s.getMinimumDifference(root)
print(ans)