力扣_二叉树的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]
相关推荐
Rain的Java大神之路27 分钟前
LeetCode 37 解数独面试攻略:回溯 + 位掩码 + MRV,从暴力到毫秒级求解
java·后端·leetcode
NEFU_Jyj33 分钟前
贝尔数(组合数学)
算法
程序员果子1 小时前
本体构建方法
人工智能·python·知识图谱·agent框架·本体
希和20271 小时前
C语言程序设计题|有序数组插入数字冒泡排序
c语言·数据结构·算法
Pniubi1 小时前
力扣73 矩阵置零
算法·leetcode·矩阵
天天被压力1 小时前
【A股分钟级高频数据完全手册 #11】券商实时行情数据接口:实时交易(券商源)接入与字段
java·人工智能·python
总裁余(余登武)2 小时前
【python项目】:1操作EXCEl自动化开发
python·自动化·excel
芝梵家电数据笔记2 小时前
用字段表核对暖菜板长期使用条件:结构、暖区、质保边界
python·家电·数据校验·dataclass·选购
天天被压力2 小时前
【A股分钟级高频数据完全手册 #12】股票五档盘口数据接口:买卖五档实时盘口解析
java·人工智能·python
布莱克60512 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map