python递归深度遍历多叉树(Python实现二叉树的常见遍历操作总结7种方法)
类别:脚本大全 浏览量:576
时间:2022-01-14 02:53:52 python递归深度遍历多叉树
Python实现二叉树的常见遍历操作总结7种方法本文实例讲述了Python实现二叉树的常见遍历操作。分享给大家供大家参考,具体如下:
二叉树的定义:
|
class TreeNode: def __init__( self , x): self .val = x self .left = None self .right = None |
二叉树的前序遍历
递归
|
def preorder(root,res = []): if not root: return res.append(root.val) preorder(root.left,res) preorder(root.right,res) return res |
迭代
|
def preorder(root): res = [] if not root: return [] stack = [root] while stack: node = stack.pop() res.append(node.val) if node.right: stack.append(node.right) if node.left: stack.append(node,left) return res |
二叉树的中序遍历
递归
|
def inorder(root,res = []): if not root: return inorder(root.left,res) res.append(root.val) inorder(root.right,res) return res |
迭代
|
def inorder(root): stack = [] node = root res = [] while stack or node: while node: stack.append(node) node = node.left node = stack.pop() res.append(node.val) node = node.right return res |
二叉树的后序遍历
递归
|
def laorder(root,res = []): if not root: return laorder(root.left,res) laorder(root.right,res) res.append(root.val) return res |
迭代
|
def laorder(root): stack = [root] res = [] while stack: node = stack.pop() if node.left: stack.append(node.left) if node.right: stack.append(node.right) res.append(node.val) return res[:: - 1 ] |
二叉树的层次遍历
迭代
|
def levelorder(root): queue = [root] res = [] while queue: node = queue.pop( 0 ) if node.left: queue.append(node.left) if node.right: queue.append(node.right) res.append(node.val) return res |
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/wenkenza5368/article/details/79573333
您可能感兴趣
- 用python实现atm银行系统(Python实现的银行系统模拟程序完整案例)
- python算法图解(python实现kmp算法的实例代码)
- python抓取贴吧标题和图片代码(Python实现的爬取百度贴吧图片功能完整示例)
- python3.7对象检测(在Python中使用Neo4j的方法)
- python提取字符串中的正则表达式(python3正则提取字符串里的中文实例)
- python实现linux服务(Python实现Linux监控的方法)
- python有哪几种赋值(关于python多重赋值的小问题)
- 怎么python爬取网页图片(详解Python静态网页爬取获取高清壁纸)
- python3列表的使用教程(对Python3 pyc 文件的使用详解)
- python中split使用方法(python lxml中etree的简单应用)
- 聊天室python小程序(用Python写一个模拟qq聊天小程序的代码实例)
- python 简单算法(python实现爬山算法的思路详解)
- python3yield使用教程(python中yield的用法详解——最简单,最清晰的解释)
- 如何用python在微信里自动回复(Python实现微信自动好友验证,自动回复,发送群聊链接方法)
- python冒泡排序代码通俗理解(详解python算法之冒泡排序)
- python语言案例教程单元测试(Python单元和文档测试实例详解)
- 梁山创始人杜迁,为何不受宋江待见,只排名83位(梁山创始人杜迁)
- 法国面包(法国面包法棍)
- 微信(微信分身)
- 双十二(双十二和双十一哪个划算)
- 佛肚竹盆景的养护之道(佛肚竹盆景的养护之道)
- 包水饺(包水饺手法怎么包视频)
热门推荐
- 腾讯云docker安装elasticsearch(docker 启动elasticsearch镜像,挂载目录后报错的解决)
- python实现sql脚本规范(基于Python的SQL Server数据库实现对象同步轻量级)
- 如何将数据从View传递到控制器
- ftp服务器的搭建及应用(FTP服务器的部署和维护心得)
- css如何使用z-index(CSS中的z-index属性基本使用教程)
- 动态加载js脚本
- css文字图片垂直居中对齐(CSS设置文字图片垂直居中的方法总结)
- laravel框架保存数据(Laravel 数据库加密及数据库表前缀配置方法)
- canvas 裁剪画布(Canvas图片分割效果的实现)
- Visual Studio的browser link
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9