Leetcode530:二叉搜索树的最小绝对差

目录

一、题目

二、示例

三、思路

四、代码


一、题目

给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。

二、示例

示例:

输入:

   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)

猜你喜欢

转载自blog.csdn.net/weixin_45666660/article/details/109026884
今日推荐