力扣_二叉树的BFS_python版本

102. 二叉树的层序遍历

  • 代码
python 复制代码
class Solution:
    def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        if not root: return []
        res = []
        queue = collections.deque()
        queue.append(root)
        while queue:
            tmp_res = []
            for _ in range(len(queue)):
                node = queue.popleft()
                tmp_res.append(node.val)
                if node.left:queue.append(node.left)
                if node.right:queue.append(node.right)
            res.append(tmp_res)
        return res   

二、103. 二叉树的锯齿形层序遍历

  • 思路:其实只需要对偶数层的结果做反转就行。
  • 代码:
python 复制代码
class Solution:
    def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        if not root: 
            return []
        qeque = collections.deque()
        qeque.append(root)
        res = []
        even = 0
        while qeque:
            tmp_res = []
            for _ in range(len(qeque)):
                node = qeque.popleft()
                tmp_res.append(node.val)
                if node.left:
                    qeque.append(node.left)
                if node.right:
                    qeque.append(node.right)
            even += 1
            if even % 2 ==0:
                res.append(tmp_res[::-1])
            else:
                res.append(tmp_res)
        return res

三、513. 找树左下角的值

  • 思路:其实就是层序遍历最后一层的第一个元素
  • 代码:
python 复制代码
class Solution:
    def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
        queue = collections.deque()
        queue.append(root)
        res = []
        while queue:
            tmp_res = []
            for _ in range(len(queue)):
                node = queue.popleft()
                tmp_res.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:               
                    queue.append(node.right)
            res.append(tmp_res)
        return res[-1][0]
相关推荐
电子云与长程纠缠5 分钟前
UE5制作六边形包裹球体效果
开发语言·python·ue5
DFT计算杂谈14 分钟前
KPROJ编译教程
java·前端·python·算法·conda
重生之我是Java开发战士26 分钟前
【笔试强训】Week5:空调遥控, kotor和气球,走迷宫,主持人调度II,体操队形,二叉树的最大路径和,排序子序列,消减整数
java·算法·动态规划
念恒123061 小时前
Python(循环中断)
开发语言·python
tsfy20031 小时前
Python 处理中文文件名的3个坑(附 Flask 上传解决函数)
开发语言·python·flask·文件上传·中文编码
AI技术控1 小时前
KV Cache 缓存机制的原理和应用:从 Transformer 推理到大模型服务优化
人工智能·python·深度学习·缓存·自然语言处理·transformer
吃好睡好便好2 小时前
用if…end…语句计算分段函数
开发语言·人工智能·学习·算法·matlab
vx-程序开发2 小时前
基于机器学习的动漫可视化系统的设计与实现-计算机毕业设计源码08339
java·c++·spring boot·python·spring·django·php
灰灰勇闯IT2 小时前
ops-memory:CANN Runtime 的 Tensor 内存管理
算法
爱睡懒觉的焦糖玛奇朵2 小时前
【从视频到数据集:焦糖玛奇朵的魔法工具Video To YOLO Dataset】
人工智能·python·学习·yolo·音视频