栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

剑指 Offer 32 - II. 从上到下打印二叉树 II(广度优先搜索)

Python 更新时间:发布时间: 百科书网 趣学号

题目描述

文章目录
  • 方法一:使用队列保存每层列表
  • 方法二:用当前队列长度控制循环次数

方法一:使用队列保存每层列表
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root:
            return []
        res, queue = [], collections.deque()
        queue.append([root])    # 以列表形式存入,每个列表代表同层所有节点
        while queue:
            level_node_list = queue.popleft()
            next_level_node_list = []   # 保存下一层节点列表
            level_node_val_list = []    # 保存当前层节点值列表
            # 遍历该层节点
            for node in level_node_list:
                level_node_val_list.append(node.val)
                if node.left:
                    next_level_node_list.append(node.left)
                if node.right:
                    next_level_node_list.append(node.right)
            res.append(level_node_val_list)
            # 这一步是为了防止一直向queue中append一个空列表,造成queue永不为空
            if next_level_node_list:
                queue.append(next_level_node_list)
        return res

方法二:用当前队列长度控制循环次数

参考解法

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root:
            return []
        res, queue = [], collections.deque()
        queue.append(root)
        while queue:
            tmp = []    # 保存每层节点的临时列表
            for _ in range(len(queue)):
                node = queue.popleft()
                tmp.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            res.append(tmp)
        return res


转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/273048.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号