如何从上到下打印python二叉树
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,如何从上到下打印python二叉树,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。题目描述请实现一个函数按照之字形顺序打印二叉树,即第一行
千家信息网最后更新 2025年01月26日如何从上到下打印python二叉树
如何从上到下打印python二叉树,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
题目描述
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
节点总数 <= 1000
题目样例
示例
输入
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
输出
[
[3],
[20,9],
[15,7]
]
题目思考
可以继续利用昨天的方案吗, 不行的话需要进行哪些改动?
解决方案
思路
回顾昨天那道题 剑指 Offer 32 - II. 从上到下打印二叉树 II - leetcode 剑指offer系列
, 我们是单独打印每一层的节点, 只不过都是从左到右的方向针对这道题, 我们可以额外维护一个变量, 记录当前方向, 每次到下一层时就调换方向即可 也就是说, 只需要对昨天题目的代码稍加改动就能搞定, 所以熟练掌握前面两种 BFS 的模板是很有必要的, 很多问题都能在它们基础上解决
复杂度
时间复杂度 O(N)
每个节点只需要遍历一次 空间复杂度 O(N)
额外需要一个队列
代码
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
res = []
if not root:
return res
q = [root]
# 初始从左到右遍历
fromleft = True
while q:
curlen = len(q)
cur = []
for node in q[:curlen]:
cur.append(node.val)
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
if fromleft:
res.append(cur)
else:
# 从右向左的话只需要将该层的值翻转加入结果中即可
res.append(cur[::-1])
# 每一层结束后都调转方向
fromleft = not fromleft
q = q[curlen:]
return res
看完上述内容,你们掌握如何从上到下打印python二叉树的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
方向
顺序
题目
复杂
复杂度
节点
问题
代码
内容
方案
方法
更多
不行
熟练
必要
束手无策
为此
以此类推
一行
也就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
塞拉摩 服务器 怎么样
网络安全领军人才
天正数据库导出
2k21怎么连不进服务器
做网络安全的股票有哪些
业务模型和数据库模型
desc在数据库中的意思
广东汕尾服务器
女孩做软件开发好吗
软件开发过程的法律风险
服务器 页面跳转页面
西城区专业软件开发质量保障
网络安全的公司还值得做吗
网络项目服务器关了可以查到吗
网络安全法第69条
大学生网络安全安全教育
数据库sql字符拼接
python3创建数据库
数据表超链接导入数据库
购买网络技术服务会计科目
传奇世界怎么调服务器
互联网大会上的科技
计算机网络技术基础3版答案
超级计算机使用全部虚拟服务器吗
浏览器dns服务器地址
数据库热key问题
企业如何减少服务器费用
sql服务器如何连接
中国移动软件开发人员待遇
象棋软件开发用什么语言