力扣_二叉树的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]
相关推荐
不二青衣18 分钟前
牛客网50题
数据结构·c++·算法
我爱一条柴ya1 小时前
【AI大模型】LLM模型架构深度解析:BERT vs. GPT vs. T5
人工智能·python·ai·ai编程
盛寒2 小时前
向量与向量组的线性相关性 线性代数
线性代数·算法
屁股割了还要学4 小时前
快速过一遍Python基础语法
开发语言·python·学习·青少年编程
学不动CV了6 小时前
C语言32个关键字
c语言·开发语言·arm开发·单片机·算法
你怎么知道我是队长7 小时前
python-enumrate函数
开发语言·chrome·python
小屁孩大帅-杨一凡7 小时前
如何解决ThreadLocal内存泄漏问题?
java·开发语言·jvm·算法
大熋7 小时前
Playwright Python 教程:网页自动化
开发语言·python·自动化
A7bert7777 小时前
【YOLOv8-obb部署至RK3588】模型训练→转换RKNN→开发板部署
linux·c++·人工智能·python·yolo
cdg==吃蛋糕8 小时前
selenium 使用方法
开发语言·python