Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】


Posted in Python onDecember 24, 2018

本文实例讲述了Python二叉树的遍历操作。分享给大家供大家参考,具体如下:

# coding:utf-8
"""
@ encoding: utf-8
@ author: lixiang
@ email: lixiang_cn@foxmail.com
@ python_version: 2
@ time: 2018/4/11 0:09
@ more_info:
二叉树是有限个元素的集合,该集合或者为空、或者有一个称为根节点(root)的元素及两个互不相交的、分别被称为左子树和右子树的二叉树组成。
1 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。
2 二叉树的第i层至多有2^{i-1}个结点
3 深度为k的二叉树至多有2^k-1个结点;
4 对任何一棵二叉树T,如果其终端结点数为N0,度为2的结点数为N2,则N0=N2+1
5 度是二叉树分支树,对于二叉树而言有0,1,2三种取值
不管是前中后序遍历,都是在当前规则下,无路可走时,输出根结点。
"""
class TreeNode(object):
  def __init__(self, x, left=None, right=None):
    self.val = x
    self.left = left
    self.right = right
def pre_traverse(root):
  """
  根左右
  :param root:
  :return:
  """
  if not root:
    return
  print root.val,
  pre_traverse(root.left)
  pre_traverse(root.right)
def mid_travese(root):
  """
  左根右
  :param root:
  :return:
  """
  if not root:
    return
  mid_travese(root.left)
  print root.val,
  mid_travese(root.right)
def after_travese(root):
  """
  左右根
  :param root:
  :return:
  """
  if not root:
    return
  after_travese(root.left)
  after_travese(root.right)
  print root.val,
def level_travese(root):
  if not root:
    return
  queue = []
  queue.append(root)
  while queue:
    cur = queue.pop(0)
    print cur.val,
    if cur.left:
      queue.append(cur.left)
    if cur.right:
      queue.append(cur.right)
def depth(root):
  if not root:
    return 0
  left = depth(root.left)
  right = depth(root.right)
  return max(left, right) + 1
if __name__ == '__main__':
  """
  tree是一个表示树根节点的对象
  前序遍历 1 2 4 5 8 9 11 3 6 7 10
  中序遍历 4 2 8 5 11 9 1 6 3 10 7
  后序遍历 4 8 11 9 5 2 6 10 7 3 1
  层序遍历 1 2 3 4 5 6 7 8 9 10 11
  深度 5
  """
  tree = TreeNode(1, TreeNode(2, TreeNode(4), TreeNode(5, TreeNode(8), TreeNode(9, left=TreeNode(11)))), TreeNode(3, TreeNode(6), TreeNode(7, left=TreeNode(10))))
  print("\n前序遍历")
  pre_traverse(tree)
  print("\n中序遍历")
  mid_travese(tree)
  print("\n后序遍历")
  after_travese(tree)
  print("\n层序遍历")
  level_travese(tree)
  print("\n深度")
  print(depth(tree))

运行结果:

前序遍历
1 2 4 5 8 9 11 3 6 7 10
中序遍历
4 2 8 5 11 9 1 6 3 10 7
后序遍历
4 8 11 9 5 2 6 10 7 3 1
层序遍历
1 2 3 4 5 6 7 8 9 10 11
深度
5

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python解析xml文件操作实例
Oct 05 Python
Python抓取百度查询结果的方法
Jul 08 Python
简述Python中的进程、线程、协程
Mar 18 Python
Python 实现链表实例代码
Apr 07 Python
Python OpenCV处理图像之滤镜和图像运算
Jul 10 Python
Python pygorithm模块用法示例【常见算法测试】
Aug 16 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 Python
selenium3+python3环境搭建教程图解
Dec 07 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
Python队列、进程间通信、线程案例
Oct 25 Python
Python接收手机短信的代码整理
Aug 02 Python
PyTorch中的torch.cat简单介绍
Mar 17 Python
详解Python进阶之切片的误区与高级用法
Dec 24 #Python
Python数据抓取爬虫代理防封IP方法
Dec 23 #Python
python3爬虫怎样构建请求header
Dec 23 #Python
windows下搭建python scrapy爬虫框架步骤
Dec 23 #Python
python构建基础的爬虫教学
Dec 23 #Python
Flask之请求钩子的实现
Dec 23 #Python
python爬虫获取新浪新闻教学
Dec 23 #Python
You might like
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
python 追踪except信息方式
2020/04/25 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
Python对excel的基本操作方法
2021/02/18 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
计算机相关的自我评价
2014/01/15 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
企业标语大全
2014/07/01 职场文书
法人授权委托书
2014/09/16 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python
python保存图片的四个常用方法
2022/02/28 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python