1. 題目
給你一棵所有節點爲非負值的二叉搜索樹,請你計算樹中任意兩節點的差的絕對值的最小值。
示例:
輸入:
1
\
3
/
2
輸出:
1
解釋:
最小絕對差爲 1,其中 2 和 1 的差的絕對值爲 1(或者 2 和 3)。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
2. 題解
由於是二叉搜索樹,使用中序遍歷,得到的是排序號的序列,比較兩兩值,取最小差即可。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.before_val = None
self.ans = float('inf')
def getMinimumDifference(self, root: TreeNode) -> int:
# 中序遍歷
self.inOrder(root)
return self.ans
def inOrder(self, root):
if not root:
return
self.inOrder(root.left)
if self.before_val is not None:
self.ans = min(self.ans,root.val-self.before_val)
self.before_val = root.val
self.inOrder(root.right)