• 530. 二叉搜索树的最小绝对差


    题目-简单难度

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

    差值是一个正数,其数值等于两值之差的绝对值。

    示例

    示例 1:
    在这里插入图片描述

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

    示例 2:
    在这里插入图片描述

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

    提示:

    • 树中节点的数目范围是 [2, 104]
    • 0 <= Node.val <= 105

    注意:本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/summary-ranges
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    1. 树转列表

    时间
    48ms
    击败 18.37%使用 Python 的用户
    内存
    16.59MB
    击败 40.82%使用 Python 的用户

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    class Solution(object):
        def getMinimumDifference(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            # 初始化最小值
            mi = float('inf')
            # 将树转换为列表
            li = [root]
            nLi = []
            while li:
                for _ in range(len(li)):
                    a = li.pop(0)
                    nLi.append(a.val)
                    if a:
                        if a.left:
                            li.append(a.left)
                        if a.right:
                            li.append(a.right)
            # 对列表进行排序
            nLi.sort()
            # 两两对比查找最小绝对差
            for i in range(1,len(nLi)):
                mi = min(mi,nLi[i] - nLi[i-1])
            return mi
                        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    2. dfs

    时间
    36ms
    击败 77.55%使用 Python 的用户
    内存
    16.46MB
    击败 71.43%使用 Python 的用户

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    class Solution(object):
        def getMinimumDifference(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            # 创建列表用于存储中序遍历下的节点值
            res = []
            # 初始化最小值
            mi = float('inf')
            # 中序遍历递归
            def dfs(node,li):
                if not node:
                    return None
                if node.left:
                    dfs(node.left,li)
                li.append(node.val)
                if node.right:
                    dfs(node.right,li)
                return li
            # 从root开始遍历, 将结果存储到res
            dfs(root,res)
            # 遍历res列表, 对值进行对比处理,对于二叉搜索树来说,中序遍历相当于排序
            for i in range(1,len(res)):
                mi = min(abs(res[i]-res[i-1]),mi)
            return mi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
  • 相关阅读:
    高等教育心理学:学习心理(重要)
    vue 聊天页面
    Git 的基本概念和使用方式。
    a-select 下拉列表正常展示
    C# 轻量级 ORM 框架 NPoco 的简单应用
    美食主题HTM5网页设计作业成品 HTML+CSS+JavaScript蛋糕甜品棕色蛋糕甜品店网页设计(4页)
    搜索查找类指令
    构建高效实时数据流水线:Flink、Kafka 和 CnosDB 的完美组合
    免费动态IP代理科普知识课堂—代理服务器的类型
    vue项目动态合并table
  • 原文地址:https://blog.csdn.net/Ashiu/article/details/132808511