首页 > 其他分享 >Leedcode-二叉搜索树的最小绝对差

Leedcode-二叉搜索树的最小绝对差

时间:2024-05-31 13:11:53浏览次数:26  
标签:cur res Leedcode fast myli 搜索 节点 二叉 ptr

自己写的:

class Solution:
    # getMinimumDifference 方法接收一个二叉树的根节点 root,并返回树中所有节点值的最小差值
    def getMinimumDifference(self, root: Optional[TreeNode]) -> int:
        # 初始化一个列表用于存储树中的节点值
        myli = []
        # 使用队列来实现层序遍历
        queue = [root]  # 从根节点开始
        while queue:  # 当队列非空时继续遍历
            cur = queue.pop()  # 弹出队列中的最后一个节点
            if cur.left:  # 如果存在左子节点
                queue.append(cur.left)  # 将左子节点添加到队列
            if cur.right:  # 如果存在右子节点
                queue.append(cur.right)  # 将右子节点添加到队列
            myli.append(cur.val)  # 将当前节点的值添加到列表 myli 中
        # 对获取到的所有节点值进行排序
        myli = sorted(myli)
        # 初始化结果 res 为 -1,表示还没有找到任何差值
        res = -1
        # 初始化慢指针和快指针,并设置列表长度
        slow_ptr = 0
        fast_ptr = 1
        n = len(myli)
        # 使用双指针技术遍历排序后的列表,寻找最小差值
        while fast_ptr < n:
            # 如果这是第一次赋值,或者找到了更小的差值,则更新 res
            if res < 0 or abs(myli[fast_ptr] - myli[slow_ptr]) < res:
                res = abs(myli[fast_ptr] - myli[slow_ptr])
            fast_ptr += 1  # 移动快指针
            slow_ptr += 1  # 移动慢指针
        # 返回找到的最小差值
        return res

 

标签:cur,res,Leedcode,fast,myli,搜索,节点,二叉,ptr
From: https://www.cnblogs.com/yyyjw/p/18224335

相关文章

  • [数据结构+二叉树+B-Tree和红黑树与B+Tree与hashMap原理+ concurrentHashMap的原理]析
    目录数据结构:你了解过哪些数据结构:这些数据结构的优缺点:二叉树:特点:二叉树适合做磁盘存储吗: 缺点:B-Tree:b-树的查找过程:思考:特点:B+Tree: B+树搜索过程与B树的查询过程没有区别。但实际上有三点不一样:(B+Tree优势)简述B+Tree:不经历IO的情况下,可以直接......
  • Leetcode 力扣106. 从中序与后序遍历序列构造二叉树 (抖音号:708231408)
    给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。示例1:输入:inorder=[9,3,15,20,7],postorder=[9,15,7,20,3]输出:[3,9,20,null,null,15,7]示例2:输入:inorder=[......
  • Leetcode 力扣105. 从前序与中序遍历序列构造二叉树 (抖音号:708231408)
    给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。示例1:输入:preorder=[3,9,20,15,7],inorder=[9,3,15,20,7]输出:[3,9,20,null,null,15,7]示例2:输入:preorder......
  • 3598. 二叉树遍历 已知前序 中序 求后序遍历
    #include<iostream>usingnamespacestd;voidpostOrder(stringpre,stringin)//定义后序遍历函数,参数为前序遍历和中序遍历结果字符串{if(in.size()){charroot=pre[0];//获取前序遍历结果的第一个字符作为根节点intk=in.find(......
  • MySQL全文索引实现简单版搜索引擎
    1前言只有Innodb和myisam存储引擎能用全文索引(innodb支持全文索引是从mysql5.6开始的)char、varchar、text类型字段能创建全文索引(fulltextindextype)全文索引的基于关键词的,如何区分不同的关键词了,就要用到分词(stopword)英文单词用空格,逗号进行分词;中文分词不方便(一个句......
  • 代码随想录算法训练营第第23天 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索
    修剪二叉搜索树这道题目比较难,比添加增加和删除节点难的多,建议先看视频理解。题目链接/文章讲解:https://programmercarl.com/0669.修剪二叉搜索树.html视频讲解:https://www.bilibili.com/video/BV17P41177ud/***@param{TreeNode}root*@param{number}low*@pa......
  • 完全二叉树查找
    描述有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。输入描述输入有多组数据,遇到0时终止输入。每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。输出描述输出该树中第d层得所有节点,节点间用空格隔开,最后......
  • 阿里云日志搜索
    阿里云日志搜索(SLS日志搜索)查找多个关键词,使用and逻辑:content:"关键词1"andcontent:"关键词2"使用or逻辑:content:"关键词1"orcontent:"关键词2"模糊查询:在关键词后面使用星号,可以模糊查询。如果关键词后面带有一些中文符号,也可以用星号代替。"关键词*"......
  • 二叉树的创建与遍历(附有C++实现详细代码)
    一、引言在计算机科学中,二叉树是一种常见的数据结构,它的每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树的应用广泛,包括但不限于搜索算法、排序算法、存储结构等。本文将详细讨论二叉树的创建与遍历方法,并通过代码示例进行说明。二、二叉树的基本概念在介......
  • SEO初学指南之关键词研究(2) - 搜索意图分析
    Hi,我是听风。这篇文章我们深入探讨下关键词研究中最重要的一点:搜索意图。虽然这在本系列教程的第一篇中提到过搜索意图,但是我还是想再写一篇文章来帮助你们了解什么是搜索意图以及如何再关键词研究中使用它。因为如果你无法匹配搜索意图,那么你可能不会对目标关键词进行排名。开......