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