怎样实现从上到下打印python二叉树
发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,这期内容当中小编将会给大家带来有关怎样实现从上到下打印python二叉树,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。题目描述从上到下打印出二叉树的每个节点,同一层
千家信息网最后更新 2025年12月04日怎样实现从上到下打印python二叉树
这期内容当中小编将会给大家带来有关怎样实现从上到下打印python二叉树,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
题目描述
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
节点总数 <= 1000
题目样例
示例
输入
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
输出
[3,9,20,15,7]
题目思考
哪些数据结构可以做到按层输出?
解决方案
思路
经典的 BFS 思路, 将当前节点的左右非空子节点追加到队列结尾, 然后继续往后遍历队列, 最终整个队列就是最后的结果 由于这里是树, 所以每个节点只可能被加入队列访问一次, 无需额外的 visit 集合 另外这道题不需要分开保存每一层的节点, 所以这里不需要记录当前层的长度之类的情况, 可以直接一次循环搞定 数据结构方面, 可以采用列表 + 动态的 for 循环(python 3 适用, 其他语言可能不支持遍历过程中更改容器)或者双端队列 + while 循环(所有语言通用, 每次 pop 最左边的元素作为当前节点) 下面的代码是个人觉得比较通用的 BFS 模板, 包括列表和双端队列两种方式的实现, 适用于不需要单独处理每一层节点的情况, 供大家参考
复杂度
时间复杂度 O(N)每个节点只需要遍历一次 空间复杂度 O(N)额外需要一个列表/双端队列
代码
方案 1 - 列表 + for 循环
class Solution:
def levelOrder(self, root: TreeNode) -> List[int]:
# 方案1: 列表+for循环
if not root:
return []
q = [root]
for node in q:
# 只将非空子节点追加到队列
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
return [x.val for x in q]
方案 2 - 双端队列 + while 循环
import collections
class Solution:
def levelOrder(self, root: TreeNode) -> List[int]:
# 方案2: 双端队列+while循环
if not root:
return []
q = collections.deque([root])
res = []
while q:
node = q.popleft()
res.append(node.val)
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
return res上述就是小编为大家分享的怎样实现从上到下打印python二叉树了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
节点
队列
循环
方案
复杂
复杂度
题目
代码
内容
就是
思路
情况
数据
数据结构
空子
结构
语言
分析
输出
专业
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
做软件开发的上游是什么
新网络安全法内容
军事科技前沿互联网
google与服务器地址
dw显示数据库记录
网络安全检查的函
800w数据库
网络安全公益广告征集
政府网络安全办公室职责
安卓电视机怎么安卓软件开发
联动数据库更新
哪些脚本需要软件开发
网络安全网站设计师
伊利中国母乳研究数据库
美国 网络安全 合作
黄浦区品牌软件开发技术指导
数据库的数据读写分离
踏歌时代网络技术有限公司
乌鲁木齐天气预报软件开发
图形仿真软件开发
嘉定区信息网络技术推荐咨询
网络安全专业考研方法
nginx下载服务器
软件开发过程常用模型
亚信网络安全防火墙
木瓜互联网科技手抄报插画手绘
服务器爆炸之后生长的动物怎么样
软件开发学费多少钱
dell服务器配置管理口
软件开发团队负责人工资