Python二叉树的层次遍历怎么实现
发表于:2024-10-22 作者:千家信息网编辑
千家信息网最后更新 2024年10月22日,这篇文章主要介绍"Python二叉树的层次遍历怎么实现",在日常操作中,相信很多人在Python二叉树的层次遍历怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"P
千家信息网最后更新 2024年10月22日Python二叉树的层次遍历怎么实现
这篇文章主要介绍"Python二叉树的层次遍历怎么实现",在日常操作中,相信很多人在Python二叉树的层次遍历怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python二叉树的层次遍历怎么实现"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
题目
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
返回其自底向上的层次遍历为:
[ [15,7], [9,20], [3]]
解题思路
思路:广度优先搜索(BFS)
先看题目,题目要求返回节点值自底向上的层次遍历。(从叶子节点所在层往根节点所在层,逐层从左到右遍历)。
那么我们可以发现,使用广度优先搜索的方法是最直观的,题目要求自底向上,这里我从上到下遍历搜索时先用栈存储,然后再实现逆序(即自底向上)。具体的做法如下:
从根节点开始搜索;
每次搜索的时候先确定当前层的节点数量,遍历当前层的全部节点,用列表存储当前层的节点值;
用栈存储上述存储每层节点值的列表,后续实现逆序。
具体代码实现如下:
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Nonefrom collections import dequeclass Solution: def levelOrderBottom(self, root: TreeNode) -> List[List[int]]: if not root: return [] ans = [] stack = [] queue = deque() queue.append(root) while queue: cnt = len(queue) tmp = [] for _ in range(cnt): node = queue.popleft() if node.left: queue.append(node.left) if node.right: queue.append(node.right) tmp.append(node.val) stack.append(tmp) while stack: ans.append(stack.pop()) return ans
到此,关于"Python二叉树的层次遍历怎么实现"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
节点
层次
搜索
所在
题目
存储
学习
叶子
广度
思路
方法
更多
逆序
帮助
实用
直观
接下来
代码
做法
数量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
wpf 数据库
计算机网络技术自考复习资料
南京邮电大学网络安全制度
南京 软件开发有限公司
软件开发中的的qc手段
金山区常规软件开发销售价格
王者荣耀48服务器IP
黑暗之魂关闭服务器
东经软件开发
网络安全设备稀缺导致
数据库推测蛋白和受体结合
王者查看各服务器名字
达梦数据库底层技术
游戏软件开发排名
java数据库链接文件
网络安全知识竞答 163
软件开发重点是
中文双语网络安全
排产编程软件开发
数据库中的部分依赖定义
云服务器怎么增加c盘容量
手机动态壁纸制作软件开发
域服务器管理教程视频
xbox无法连接服务器怎么办
戏剧专业数据库
手机防范网络安全
网络安全周个人信息到底咋泄露
园艺花卉app软件开发
最新科技互联网大会
哪种数据库最通用