文章目录

  • 一. 二叉树基本概念
  • 二. 二叉树的性质
  • 三. 二叉树的代码实现
  • 四. 二叉树的先序、中序、后序遍历

一. 二叉树基本概念

二. 二叉树的性质


三. 二叉树的代码实现

class Node(object):"""二叉树节点"""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]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)if cur_node.lchild is not None:queue.append(cur_node.lchild)if cur_node.rchild is not None:queue.append(cur_node.rchild)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()

四. 二叉树的先序、中序、后序遍历

class Node(object):"""二叉树节点"""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]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)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(" ")

数据结构与算法--8.二叉树的基础知识相关推荐

  1. 数据结构与算法--7.树的基础知识

    文章目录 一. 树的概念 二. 树的术语 三. 树的种类 四. 树的存储和表示 五. 常见的树的应用场景 一. 树的概念 二. 树的术语 三. 树的种类 四. 树的存储和表示 五. 常见的树的应用场景

  2. 数据结构与算法:二叉树专题

    数据结构与算法:二叉树专题 前言 前提条件 基础知识 二叉树链式存储结构 二叉树中序遍历 二叉树层序遍历 常见编程题 把一个有序整数数组放到二叉树中 逐层打印二叉树结点数据 求一棵二叉树的最大子树和 ...

  3. 数据结构与算法之-----二叉树(一)

    [ 写在前面的话:本专栏的主要内容:数据结构与算法. 1.对于初识数据结构的小伙伴们,鉴于后面的数据结构的构建会使用到专栏前面的内容,包括具体数据结构的应用,所使用到的数据结构,也是自己构建的,未使用 ...

  4. LeetCode 牛客网 C++ 算法 刷题必备基础知识

    LeetCode 牛客网 C++ 算法 刷题必备基础知识 {ignore} 文章目录 LeetCode 牛客网 C++ 算法 刷题必备基础知识 {ignore} main综合模板 数组排序库 字符串库 ...

  5. 常考数据结构与算法:输出二叉树的右视图

    题目描述 请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 上图树的右视图为:{1,4,3,7} 做此题之前可以先做下面3道题: 1. 常考数据结构与算法:求二叉树的层序遍历 2.常 ...

  6. 数据结构与算法之二叉树的序列化和反序列化及判断一棵树是否为平衡二叉树

    数据结构与算法之二叉树的序列化和反序列化及判断一棵树是否为平衡而二叉树 目录 二叉树的序列化和反序列化 判断一棵树是否为平衡而二叉树 1. 二叉树的序列化和反序列化 1. 递归版本序列化和反序列化 代 ...

  7. 数据结构与算法之二叉树的先序遍历,中序遍历,后序遍历

    数据结构与算法之二叉树的先序遍历,中序遍历,后移遍历 目录 实现二叉树的先序,中序,后序遍历,包括递归方式和非递归方式 在二叉树中找到一个节点的后继节点 1. 实现二叉树的先序,中序,后序遍历,包括递 ...

  8. 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树

    [本文谢绝转载,原文来自http://990487026.blog.51cto.com] 树 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树二叉树的创建,关系建立二叉树的创建 ...

  9. 第一章 算法设计与分析基础知识

    系列文章目录 第一章 算法设计与分析基础知识 第二章 算法的分治策略 第三章 算法的动态规划 第四章 算法的贪心法 -- @[TOC](这里写目录标题) # 一级目录 ## 二级目录 ### 三级目录 ...

最新文章

  1. java 捕获数据包,缓存从pcap捕获的数据包
  2. python学生管理系统-Python 学生信息管理系统 2.0
  3. 【Paddle】Anaconda安装PaddlePaddle和PaddleX教程
  4. ubuntu kylin 14.04编译openjdk-7u40
  5. IT增值服务实践心得体会:企业客户的钱比个人客户好赚得多
  6. 聚焦BCS|吴云坤产业峰会演讲:用内生安全框架提升网络安全产值
  7. shell如何传参?
  8. Javascript遍历map集合以及map对象
  9. 【计算机网络自顶向下方法】Web页面请求的历程
  10. 重装系统后计算机无法启动,Win7纯净版系统重装后无法开机的原因和解决方法...
  11. 降雪致国道315线部分道路通行受阻公路交警部门昼夜坚守
  12. 获取Excel合并单元格的值
  13. 监控系统与服务器的连接,监控服务器的连接方法
  14. python six 用途_python之six用法
  15. unity调用高德地图
  16. 优美的曲线(含蝴蝶线)-CoCube
  17. 使用 Cipher CipherInputStream CipherOutputStream 实现对文件的加解密
  18. 大一计算机专业考什么证书,计算机专业大一的学生能考什么证书?
  19. rt thread studio使用QBOOT和片外flash实现OTA升级
  20. 【转】如何实现点击textbox显示monthCalendar 选择monthCalendar把值传给textbox

热门文章

  1. 内存不足:杀死进程还是牺牲子进程
  2. C、C++函数集 说明
  3. 我们真的需要统一的编程规范?
  4. 基于SIMD的AVS整数反变换算法设计与优化
  5. 解决dataTable 报错:cannot read property “style“ of undefined
  6. FreeSql (三十)读写分离
  7. Linux 终端仿真程序Putty
  8. JAVA的SSH框架登录注册
  9. 判断是否为gif/png图片的正确姿势
  10. C语言笔试常考知识点