树的实现采用queue的形式:

树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根)

######################P6.4 数据结构##################
class Node(object):def __init__(self, item):self.elem = itemself.lchild = Noneself.rchild = Noneclass Tree(object):def __init__(self):self.root = None"""树添加子节点"""def add(self, item):node = Node(item)if self.root is None:self.root = nodereturnelse:queue = [self.root]while queue:cur_node = queue.pop(0)if cur_node.lchild is None:cur_node.lchild = nodereturnelse:queue.append(cur_node.lchild)if cur_node.rchild is None:cur_node.rchild = nodereturnelse:queue.append(cur_node.rchild)def breadth_travel(self):"""广度遍历,又称层次遍历"""if self.root is None:returnqueue = [self.root]while queue:cur_node = queue.pop(0)print(cur_node.elem, end=" ")if cur_node.lchild is not None:queue.append(cur_node.lchild)if cur_node.rchild is not None:queue.append(cur_node.rchild)######################P6.5 数据结构##################"""先序遍历:中左右  中序遍历:左中右   后序遍历:左右中"""def preorder(self, node):#先序遍历:中左右if node is None:returnprint(node.elem, end=" ")  #打印根节点元素self.preorder(node.lchild)  #处理左子树self.preorder(node.rchild)def mideorder(self, node):#中序遍历:中左右if node is None:returnself.mideorder(node.lchild)  #处理左子树print(node.elem, end=" ")  # 打印根节点元素self.mideorder(node.rchild)def posorder(self, node):#后序遍历:中左右if node is None:returnself.posorder(node.lchild)  #处理左子树self.posorder(node.rchild)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.add(9)tree.breadth_travel()print(" ")tree.preorder(tree.root)print(" ")tree.mideorder(tree.root)print(" ")tree.posorder(tree.root)print(" ")

运行结果:依次为 原来的顺序  先序遍历 中序遍历 与后续遍历

python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)相关推荐

  1. 【Python数据结构与算法】(三):递归(Recursion)

    [Python数据结构与算法](三):递归(Recursion) ✨本文收录于<Python数据结构与算法>专栏,此专栏主要记录如何python学习数据结构与算法笔记.

  2. 【数据结构】理解二叉树的三种遍历--前序、中序、后序 +层序(简明易懂)

    一.易懂的形象理解 其实从名字就可以很好的理解这三种遍历,我在第二点时候说,但是估计能翻到我的文的同学们之前肯定看过好多类似的了,那咱们换个思路~ 先用我想的一种简单易懂的形象思维理解一下前序.中序. ...

  3. C/C++中算法运行时间的三种计算方式(By 虚怀若谷)

    算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量.而度量一个程序的执行时间通常有两种方法. 事后统计的方法:该方法利用计算机内部的计时功能,可以精确到毫秒级别,这种方法有两个缺 ...

  4. Python数据结构与算法(第三天)

    18.链表的提出 根据线性表的实际存储方式,分为两种实现模型: 顺序表,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示. 链表,将元素存放在通过链接构造起来的一系列存储 ...

  5. 【数据结构】翻转二叉树的三种方式

    一.分析 理解递归思想的条件下很容易想到解题思路,当然可能有人会有疑问,那什么情况下知道使用递归呢,有个最简单的办法如果算法里需要重复循环用同一个思路执行得到结果,那么必然可以使用递归.进行翻转本质上 ...

  6. Python数据结构与算法笔记(三):查找问题——列表查找

    列表查找 查找问题介绍 顺序查找 # li-列表 # val-待查找元素 # ind-索引 def linear_search(li,val):for ind,v in enumerate(li):i ...

  7. python操作数据库的几种方法_python对mysql数据库操作的三种不同方式

    原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...

  8. WebSocket不同版本的三种握手方式以及一个Netty实现JAVA类

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 一.We ...

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

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

  10. 数据结构:关于重建二叉树的三种思路

    前言: 前几天在温习<编程之美>这本书的时候,看到了二叉树的重建.正好,也想复习一下数据结构的知识,就来写了一个小Demo.居然有新发现(本文中的第三种方式). 我们在学习数据结构的时候, ...

最新文章

  1. 网站被降权后该进行检查哪些问题?
  2. XenApp Farm:修改密码、退域、更改Farm
  3. 如何让你的SQL运行得更快(二)
  4. 将微信数据提取为exel表格(2022年版)免root 保姆级教程
  5. cad线性标注命令_CAD中线性标注的快捷键是什么?
  6. 求三维空间两直线交点
  7. 天宇优配|医药股反弹受阻 公募乐观态度不改
  8. android远程指纹认证流程的猜测
  9. MSF给正常程序添加后门
  10. 【联盛德W806上手笔记】九、DMA
  11. 中兴Nubia Z5S mini一键ROOT教程 获取ROOT权限
  12. 视频加水印,怎么给视频加水印?
  13. 消防产品在酒店行业的应用
  14. 02论文分享与分析——基于ROS的移动机械臂底层规划及运动仿真
  15. 2020 ACM杰出科学家名单出炉:叶杰平、崔鹏等26位华人学者上榜
  16. 生活.小米移动电话卡1718或1719号段的接入点设置
  17. linux服务器强行删除隐藏文件
  18. 【csdn涨粉秘籍】亲身体验从一年才涨80粉到20天涨粉800多,规则内设置,一个步骤助你快速涨粉
  19. 关于url网上下载安装包(java)
  20. 大数据全套教学视频,看仔细了是视频!

热门文章

  1. 用计算机采集卡检测压力传感器信号故障,计算机联网检测系统应用研究
  2. C语言 数据类型(就做个笔记总结)
  3. python生日提醒_python, 实现朋友家人年历生日自动提醒
  4. xuanke java_wangshangxuankexitong - WEB源码|JSP源码/Java|源代码 - 源码中国
  5. java 运算符输入_java-运算符,IO输入输出,文件操作
  6. matlab plot不均匀间隔,matplotlib如何绘制间隔为2^n的不均匀图形?
  7. php 前端控制器,前端控制器模式
  8. Pytorch的神经网络编程学习第一节
  9. 力扣(LeetCode)刷题,简单+中等题(第34期)
  10. Ubuntu virtualbox