力扣_二叉树的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]
相关推荐
艾醒20 小时前
大模型面试题剖析:模型微调中冷启动与热启动的概念、阶段与实例解析
深度学习·算法
Carl_奕然21 小时前
【大模型】Agent之:从Prompt到Context的演进之路
人工智能·python·语言模型·prompt·多模态
eqwaak021 小时前
实战项目与工程化:端到端机器学习流程全解析
开发语言·人工智能·python·机器学习·语言模型
新学笺21 小时前
数据结构与算法 —— 从基础到进阶:带哨兵的单向链表,彻底解决边界处理痛点
算法
智者知已应修善业21 小时前
【51单片机计时器1中断的60秒数码管倒计时】2023-1-23
c语言·经验分享·笔记·嵌入式硬件·算法·51单片机
Jiezcode21 小时前
LeetCode 148.排序链表
数据结构·c++·算法·leetcode·链表
Asmalin21 小时前
【代码随想录day 29】 力扣 406.根据身高重建队列
算法·leetcode·职场和发展
Asmalin21 小时前
【代码随想录day 32】 力扣 70.爬楼梯
算法·leetcode·职场和发展
upgrador1 天前
PYTHON:Python 新版本下载安装更新&py文件Pycharm运行指南
开发语言·python
闲人编程1 天前
使用Django从零开始构建一个个人博客系统
后端·python·django·接口·restful·web·个人博客