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 @ 2024-05-31 12:57  Junior_bond  阅读(18)  评论(0)    收藏  举报