首页 > 其他 > 详细

LeetCode 783. 二叉搜索树节点最小距离

时间:2021-04-13 16:44:32      阅读:11      评论:0      收藏:0      [点我收藏+]

783. 二叉搜索树节点最小距离

Difficulty: ** 示例 1: 输入:root = [4,2,6,1,3] 输出:1 示例 2: 输入:root = [1,0,48,null,null,12,49] 输出:1   提示: 树中节点数目在范围 [2, 100] 内 0 <= Node.val <= 105 **

给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值

注意:本题与 530: 相同

示例 1:

技术分享图片

输入:root = [4,2,6,1,3]
输出:1

示例 2:

技术分享图片

输入:root = [1,0,48,null,null,12,49]
输出:1

提示:

  • 树中节点数目在范围 [2, 100]
  • 0 <= Node.val <= 10<sup>5</sup>

Solution

一开始理解错了题目,以为是树中相邻的两个节点差值的最小值,其实题目要求的是任意两个节点差值的最小值,又因为给定的是二叉搜索树,那么意味着按照中序遍历后的二叉树是升序排列的,获得按照升序排列的二叉搜索树节点值之后,遍历节点值两两求节点值的差值,并取最小值即为结果。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def minDiffInBST(self, root: TreeNode) -> int:
        if not root:
            return None
        stack, nums = [], []
        while True:
            while root:
                stack.append(root)
                root = root.left
            if not stack:
                break
            node = stack.pop()
            nums.append(node.val)
            root = node.right
        res = float(‘inf‘)
        for i in range(1, len(nums)):
            res = min(res, nums[i] - nums[i-1])
        return res

LeetCode 783. 二叉搜索树节点最小距离

原文:https://www.cnblogs.com/swordspoet/p/14652748.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!