LeetCode530. 二叉搜索樹的最小絕對差(python,中序遍歷)

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章