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

自己写的:

复制代码
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
复制代码

 

posted @   Junior_bond  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示