广度优先遍历和深度优先遍历代码如下所示:

# coding=utf-8class Node(object):#尽量不加3个引号的注释了容易报错def __init__(self, item):self.elem = itemself.lchild = Noneself.rchild = Noneclass Tree(object):def __init__(self):self.root = Nonedef add(self,item):node = Node(item)#有一种特殊情况,一上来根节点就是空的情况if self.root is None:self.root = nodereturnqueue = [self.root]#主要queue不为空,就一直循环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)def preorder(self,node):#先序遍历 根左右if node is None:returnprint(node.elem,end=" ")self.preorder(node.lchild)self.preorder(node.rchild)def inorder(self,node):# 中序遍历 左中(根)右if node is None:returnself.inorder(node.lchild)print(node.elem, end=" ")self.inorder(node.rchild)def postorder(self,node):# 后序遍历 左右中(根)if node is None:returnself.postorder(node.lchild)self.postorder(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.inorder(tree.root)print(" ")tree.postorder(tree.root)print(" ")

python算法与数据结构-二叉树的遍历相关推荐

  1. python算法与数据结构-二叉树的代码实现(46)

    阅读目录 一.二叉树回忆 二.二叉树比链表好在哪里? 三.二叉树的节点定义(C语言版) 四.定义一个二叉树(C语言版) 五.初始化树(C语言版) 六.创建节点(C语言版) 七.插入节点(C语言版) 八 ...

  2. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

  3. 【数据结构与算法基础】二叉树与其遍历序列的互化 附代码实现(C和java)

    前言 数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷. 也因如此,它作为博主大二上学期最重 ...

  4. 数据结构——二叉树的遍历

    "树"是一种重要的数据结构,本文浅谈二叉树的遍历问题,採用C语言描写叙述. 一.二叉树基础 1)定义:有且仅有一个根结点,除根节点外,每一个结点仅仅有一个父结点,最多含有两个子节点 ...

  5. 算法:图解二叉树的遍历

    遍历 先序遍历 从树根开始绕着整棵树的外围转一圈,经过结点的顺序就是先序遍历的顺序 先序遍历结果:ABDHIEJCFKG 来源 来源 中序遍历 中序遍历可以想象成,按树画好的左右位置投影下来就可以了 ...

  6. 数据结构 二叉树的遍历

    所谓遍历, 无非就是把1个容器的所有元素逐个输出, 而这个输出是线性的. 但是二叉树是1个非线性的容器,  如何把它的元素按一定顺序输出就是1个值得学习的课题了. 一般来讲, 遍历二叉树有3种方法, ...

  7. 算法与数据结构 -- 二叉树(六)

    一.二叉树 满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树 完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的.对于深度为K的,有n个结点的二叉 ...

  8. python算法与数据结构-冒泡排序算法(32)

    阅读目录 一.冒泡排序介绍 二.冒泡排序原理 三.冒泡排序图解 四.冒泡排序总结 五.冒泡排序python代码实现 六.冒泡排序C语言代码实现 七.冒泡排序的优化 八.冒泡排序的时间复杂度 九.冒泡排 ...

  9. 一步一步写算法(之二叉树广度遍历)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在二叉树的遍历当中,有一种遍历方法是不常见的,那就是广度遍历.和其他三种遍历方法不同,二叉树的 ...

最新文章

  1. 刚刚,谷歌终于回应AI专利争议:怕被碰瓷,抢先下手,永不牟利
  2. 计算机二级考试试题在线看,【TOP182015年全国计算机二级考试试题题库.doc文档免费在线阅读材料】...
  3. 树莓派安装Ubuntu MATE及ROS系统
  4. LeetCode 1197. 进击的骑士(BFS)
  5. nginx的rewrite 参数和例子
  6. bzoj 1050: [HAOI2006]旅行comf(尺取+最短路)
  7. wpf之DataTrigger 数据触发器
  8. CEPH浅析”系列之三——CEPH的设计思想
  9. ext4文件系统制作 - make_ext4fs 参数介绍【转】
  10. mbedtls入门和使用
  11. 手把手教你破解软件,每一步都有图示,你若再不会就太XX
  12. w7忘记计算机密码,win7系统忘记电脑开机密码的解决方法
  13. IBM SPSS statistics v28.0安装教程
  14. Java中多态的表现形式
  15. 让ChatGPT来制作Excel表格,ChatGPT实现文本和表格的相互转换
  16. 新电脑到手后,如何设置?
  17. c++中关于设置左对齐和右对齐的问题解决方法
  18. 第一章 C语言与内存
  19. 国际标准分类法ICS
  20. 怎么学好Web前端开发 有哪些相关书籍推荐

热门文章

  1. C和C++栈stack
  2. java 递归 堆栈_尾递归函数仍在Java吹堆栈
  3. insert into 时间_2021国家公务员考试报名时间_国考什么时候报名
  4. 1.18.3.Flink Catalog介绍、Catalog 定义、Catalog 的实现、Catalog 使用举例
  5. 如何用Redlock实现分布式锁
  6. Spark中自定义排序
  7. 为员工长工资。从最低工资调起每人长10%,请计算长工资的人数和长工资后的工资总额,并输出输出长工资人数及工资总额。
  8. mysql相邻行数据计算的自定义变量@和Lead窗口函数的具体案例适应版本mysq5.7 mysql8.0
  9. Python多继承基础
  10. Python基础概念_9_输入输出