Python二叉树的层次遍历怎么实现
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要介绍"Python二叉树的层次遍历怎么实现",在日常操作中,相信很多人在Python二叉树的层次遍历怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"P
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
数据库删除基本表用什么语句
j75施乐服务器进入密码
知乎的发帖数据库设计
思修关于网络安全
滨海新区媒体网络技术答疑解惑
肇庆监控数据库
网络安全常识有哪些小学生
辽宁服务器维护价格
汉口学院网络技术专业
网络安全普法重要吗
全市网络安全工作专题会议
计算机网络技术软件编程
金蝶软件开发票怎么开
employees数据库在哪里
网络技术上总把关
联通网络服务器丢失
天津金蝶软件开发哪家好
京智云科互联网科技江苏有限公司
电力调度数据网络安全
山东高频服务器云主机
王者服务器选哪个区人最多
电脑可以改装无盘服务器吗
中南软件开发找哪家
软件开发助理是干什么的
信息与网络技术基础学什么
用友 数据库表结构
互联网金融像金融科技转型
成都软件开发工资多少钱
实时连接as400数据库
虎丘区正规软件开发信息推荐