zoukankan      html  css  js  c++  java
  • 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/
  • 相关阅读:
    过拟合问题详解
    C++数据结构原理和经典问题求解--绪论
    centos系统 anaconda3(python3)安装pygrib
    pycharm激活教程
    如何查看电脑是几核几线程(网传方法有错误)
    深度学习过程
    VS2010 编译 boost thread库
    windows多线程编程
    matplotlib画条形图
    matplotlib画折线图,并以时间作为横轴
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14652748.html
Copyright © 2011-2022 走看看