python N叉树的三种遍历怎么实现
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍"python N叉树的三种遍历怎么实现",在日常操作中,相信很多人在python N叉树的三种遍历怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2025年02月02日python N叉树的三种遍历怎么实现
这篇文章主要介绍"python N叉树的三种遍历怎么实现",在日常操作中,相信很多人在python N叉树的三种遍历怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"python N叉树的三种遍历怎么实现"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1、层次遍历
"""# Definition for a Node.class Node: def __init__(self, val=None, children=None): self.val = val self.children = children""" class Solution: def levelOrder(self, root: 'Node') -> List[List[int]]: if not root: return [] queue = collections.deque() queue.append(root) res = [] while queue: size = len(queue) temp = [] for _ in range(size): node = queue.popleft() temp.append(node.val) if node.children: queue.extend(node.children) res.append(temp) return res
2、前序遍历
前序遍历就是从左至右,先根后孩子;递归比较简单,迭代法的话需要借助一个辅助栈,把每个节点的孩子都压入栈中;
"""# Definition for a Node.class Node: def __init__(self, val=None, children=None): self.val = val self.children = children""" class Solution: def preorder(self, root: 'Node') -> List[int]: if not root: return [] #迭代法 stack, output = [root, ], [] while stack: root = stack.pop() output.append(root.val) stack.extend(root.children[::-1]) return output #递归法 res = [] def helper(root): if not root: return res.append(root.val) for children in root.children: helper(children) helper(root) return res
3、后序遍历
在后序遍历中,我们会先遍历一个节点的所有子节点,再遍历这个节点本身。例如当前的节点为 u,它的子节点为 v1, v2, v3 时,那么后序遍历的结果为 [children of v1], v1, [children of v2], v2, [children of v3], v3, u,其中 [children of vk] 表示以 vk 为根节点的子树的后序遍历结果(不包括 vk 本身)。我们将这个结果反转,可以得到 u, v3, [children of v3]', v2, [children of v2]', v1, [children of v1]',其中 [a]' 表示 [a] 的反转。此时我们发现,结果和前序遍历非常类似,只不过前序遍历中对子节点的遍历顺序是 v1, v2, v3,而这里是 v3, v2, v1。
"""# Definition for a Node.class Node: def __init__(self, val=None, children=None): self.val = val self.children = children""" class Solution: def postorder(self, root: 'Node') -> List[int]: if not root: return [] #后续遍历是先遍历一个节点的孩子节点,在去遍历这个节点本身 #递归 result = [] def postHelper(root): if not root: return None children = root.children for child in children: postHelper(child) result.append(root.val) postHelper(root) return result #迭代法:辅助栈 res = [] stack = [root,] while stack: node = stack.pop() if node is not None: res.append(node.val) for children in node.children: stack.append(children) return res[::-1]
总结:N叉树和二叉树的差别不是很多,唯一的差别就是孩子很多不需要去判断左右孩子了。
到此,关于"python N叉树的三种遍历怎么实现"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
节点
孩子
结果
学习
迭代法
递归
迭代
差别
更多
帮助
辅助
实用
接下来
只不过
对子
就是
层次
文章
方法
理论
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
unix服务器监听端口
武汉学网络技术
网络安全教育总结与心得
浙江交友软件开发价格表
网络安全事件最高响应级别
就业规划网络安全职位市场分析
检察院网络安全管理的措施
深圳市优加互联网科技
研达教育数据库
软件开发最佳方向
国家网络安全法治教育宣传
安卓软件开发培训多少钱
如何利用网络技术发布广告
c 获取数据库数据并赋值
内蒙远程服务器租赁收费
集团公司网络安全第一责任人
新书数据库
乌班图服务器系统有没有交互界面
第八届网络安全宣传周主会场
网络技术包括哪些
软件开发纠纷 诉讼
select语句选数据库
软件开发学习顺序
九江网络安全工程师
SQL建立数据库的作用
乌海软件开发方案
2017春季高考数据库真题
网络安全组织宣传活动
服务器怎么安装系统
软件开发主要控制措施