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

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

相同题目:

  1. https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/
posted @ 2021-04-13 13:17  swordspoet  阅读(48)  评论(0编辑  收藏  举报