python代码实现了二叉树,这次将会实现二叉树的几种遍历方法,来更好的解析二叉树的结构特点。分别是一种广度遍历,和三种深度遍历方法:先序遍历,中序遍历,后序遍历。下面是代码实现:
  

1、先序遍历

遍历顺序:根==》左子树==》右子树,实现代码:

def pre(self,node):#定义一个先序遍历的方法

if node is None:#判断节点是否为空,为空则返回

return

print(node.elem,end=’ ')#打印遍历的节点

self.pre(node.left)#递归左子树

self.pre(node.right)#递归右子树

2、中序遍历

遍历顺序:左子树==》根 ==》右子树,实现代码:

def md(self,node):#定义一个中序遍历的方法

if node is None: #判断节点是否为空,为空则返回

return

self.md(node.left) #递归左子树

print(node.elem,end=’ ') #打印遍历的节点

self.md(node.right) #递归右子树

3、后序遍历

遍历顺序:左子树==》右子树==》根,实现代码:

def bhd(self,node):#定义一个后序遍历的方法

if node is None:#判断节点是否为空,为空返回

return

self.bhd(node.left)#递归左子树

self.bhd(node.right)#递归右子树

print(node.elem,end=’ ')#打印遍历的节点

打印结果:

if name == “main”:

tree=Tree()

tree.add(0)

tree.add(1)

tree.add(2)

tree.add(3)

tree.add(4)

tree.add(5)

tree.add(6)

tree.add(7)

tree.add(8)

tree.pre(tree.root)#打印先序遍历的值

print(’ ')

tree.md(tree.root)#打印中序遍历的值

print(’ ')

tree.bhd(tree.root)#打印后序遍历的值

print(’ ')

#输出:

# 0 1 3 7 8 4 2 5 6 先序遍历的值

# 7 3 8 1 4 0 5 2 6 中序遍历的值

# 7 8 3 4 1 5 6 2 0 后序遍历的值

总结二叉树的三种深度遍历的实现主要是利用了递归,利用不同的遍历顺序来改变递归的顺序和节点打印的顺序来实现,利用这一特点就可以用python快速的实现三种遍历方法了。

本文来自千锋教育,转载请注明出处。

Python实现二叉树的三种深度遍历方法!相关推荐

  1. Python培训讲解二叉树的三种深度

    python代码实现了二叉树,这次将会实现二叉树的几种遍历方法,来更好的解析二叉树的结构特点.分别是一种广度遍历,和三种深度遍历方法:先序遍历,中序遍历,后序遍历.下面是代码实现: 1.先序遍历 遍历 ...

  2. Python教程讲解二叉树的三种深度

    python代码实现了二叉树,这次将会实现二叉树的几种遍历方法,来更好的解析二叉树的结构特点.分别是一种广度遍历,和三种深度遍历方法:先序遍历,中序遍历,后序遍历.下面是代码实现: 1.先序遍历 遍历 ...

  3. Python二叉树的三种深度优先遍历

    Python二叉树的三种深度优先遍历 一.广度优先遍历和深度优先遍历 对二叉树进行遍历(traversal)是指依次对树中每个节点进行访问,在遍历的过程中实现需要的业务. 对树的遍历方式有广度优先遍历 ...

  4. python读文件readlines_Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n...

    Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n 首先, 让我们看下数据demo.txt, 就两行数据. 35durant teamGSW 1 ...

  5. C语言 数据结构 二叉树实现、二叉树的三种递归遍历

    二叉树 在计算机科学中,二叉树(英语:Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结构.通常分支被称作"左子树"或"右子树&quo ...

  6. C语言基本数据结构之二(二叉树的三种遍历,节点数以及深度算法)

    关于二叉树的定义,网上有比较好的介绍,在这里就简单介绍二叉树的一些性质 二叉树的基本性质 1)二叉树的第i层上至多有 2^(i-1)(i ≥1)个结点: 2)深度为 h 的二叉树中至多含有 2^h – ...

  7. 二叉树----数据结构:二叉树的三种遍历及习题

    二叉树----数据结构:二叉树的三种遍历,利用递归算法. 关于二叉树的遍历,应用非常广泛,不单单是访问打印结点,还可以进行一系列的操作,如赋值.删除.查找.求二叉树的深度等等. 有递归和非递归两种算法 ...

  8. 实现二叉树的三种非递归遍历算法

    [问题描述] 编写程序,实现二叉树的三种非递归遍历算法:先序非递归,中序非递归,后序非递归. [输入形式] 输入建树序列. [输出形式] 输出三种遍历序列. [样例输入] A B C # # # # ...

  9. 二叉树的三种遍历方式(递归、非递归和Morris遍历)

    二叉树的三种遍历方式(递归.非递归和Morris遍历) 原文:http://www.linuxidc.com/Linux/2015-08/122480.htm 二叉树遍历是二叉树的最基本的操作,其实现 ...

最新文章

  1. 安防行业巨头都是如何布局无人机的?
  2. 优秀的博客与文章总结链接地址
  3. C++中的静态成员函数
  4. 线程池什么时候调用shutdown方法_ThreadPoolExecutor.shutdown()?
  5. 2021.1.17.s1b
  6. 一入前端深似海,从此红尘是路人系列第七弹之孤独的剑客-单例模式
  7. 一个js编写全选、弹出对话框、ajax-json的案例
  8. js 动态生成button 并设置click事件
  9. db2v9/9.5高级应用开发_使用 Vue.js 2.0 开发单页应用
  10. 【python】Tkinter窗口可视化二
  11. 离散数学编程输出主析取范式(二进制排列转十进制输出)
  12. snagit 9.0注册码
  13. java论文3000字_一篇文章让你真正了解Java(纯干货)
  14. 计算机粘贴复制知识,不能复制粘贴怎么办?Win7电脑不能复制粘贴是什么原因及解决方法...
  15. Unity - Timeline 之 Nesting Timeline instances(嵌套的Timeline实例)
  16. 网络数据保障ptop_网络影响未来十大预言 宽带应用将与新媒体融合
  17. 十四、 ThinkPHP6_聚合.原生.子查询
  18. RecyclerView与ViewPager2
  19. android入门之broadcast
  20. 邮箱的容量怎么算怎么看?免费邮箱容量多大?能办公用吗?

热门文章

  1. 2017年度最值得读的AI论文评选 | 大张旗鼓送福利
  2. 开课吧 Python专家级编程:机制与实操
  3. 机器学习理论《统计学习方法》学习笔记:第十一章 条件随机场(CRF)
  4. 计算一个尽可能大的素数
  5. 【Linux病毒】腾讯云 cron、sshd 进程CPU占用超95%(亡命徒 Outlaw 僵尸网络攻击)问题排查及处理步骤
  6. JAVA——文件操作工具类封装的简单实现
  7. C#——简单的计算器(仿Windows 10计算器)
  8. 质数(Prime_Number)
  9. java对日期的操作详解
  10. JavaScript学习笔记05【高级——DOM对象】