一、树的定义

树形结构是一类重要的非线性结构。树形结构是结点之间有分支,并具有层次关系的结构。它非常类似于自然界中的树。

树的递归定义:

树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:

(1)有且仅有一个特定的称为根(Root)的结点;

(2)其余的结点可分为m(m≥0)个互不相交的子集Tl,T2,…,Tm,其中每个子集本身又是一棵树,并称其为根的子树(Subree)。

二、二叉树的定义

二叉树是由n(n≥0)个结点组成的有限集合、每个结点最多有两个子树的有序树。它或者是空集,或者是由一个根和称为左、右子树的两个不相交的二叉树组成。

特点:

(1)二叉树是有序树,即使只有一个子树,也必须区分左、右子树;

(2)二叉树的每个结点的度不能大于2,只能取0、1、2三者之一;

(3)二叉树中所有结点的形态有5种:空结点、无左右子树的结点、只有左子树的结点、只有右子树的结点和具有左右子树的结点。

三、二叉树的性质

性质1:二叉树的第i层上最多有个结点。

性质2:深度为h的二叉树上最多有-1个结点。

性质3:具有n个结点的二叉树的高度不小于的最大整数。

性质4:任意一棵二叉树中,如果叶子结点的个数为n0,度为2的结点的个数为n2,则必然有n0=n2+1。

满二叉树:若深度为h的二叉树,恰好具有-1个结点,则称为满二叉树。

完全二叉树:若一棵具有n个结点的二叉树的逻辑结构与满二叉树的前n个结点的逻辑结构完全相同,则称该二叉树为完全二叉树

扩充二叉树:除叶子结点外,其余结点都必须有两个孩子的二叉树。

四、二叉树的存储结构

二叉树的存储结构有顺序存储结构、链式存储结构

顺序存储:结构采用一维数组存储的。根据二叉树的性质6可计算出双亲结点、左右孩子结点的下标。因此满二叉树、完全二叉树的存储可采用一维数组,把结点按从上到下、从左到右的顺序存放在数组中,结点之间的关系可由性质6的公式计算得到。

链式存储:结构采用链表存储二叉树中的数据元素,用链建立二叉树中结点之间的关系。二叉树最常用的链式存储结构是二叉链,每个结点包含三个域,分别是数据元素域data、左孩子链域lChild和右孩子链域rChild。与单链表带头结点和不带头结点的两种情况相似,二叉链存储结构的二叉树也有带头结点和不带头结点两种

五、二叉树的操作

python数据结构之二叉树的建立实例

python数据结构之二叉树的遍历实例

python数据结构之二叉树的统计与转换实例 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

python数据结构树和二叉树,python数据结构树和二叉树简介相关推荐

  1. 数据结构与算法:树与二叉树python实现

    最近复习一遍数据结构与算法,做一些笔记,大家可以一起复习. 一.树的一些容易混淆的定义: 结点层:根结点的层定义为1:根的孩子为第二层结点,依此类推: 树的深度(或高度):树中最大的结点层: 满二叉树 ...

  2. Python数据结构与算法笔记(八):数据结构——树,二叉树和AVL树

    树 class Node:def __init__(self, name, type='dir'):self.name = nameself.type = type #"dir" ...

  3. Python数据结构11:树的实现,树的应用,前中后序遍历,二叉查找树BST,平衡二叉树AVL树,哈夫曼树和哈夫曼编码

    1.概念 树一种基本的"非线性"数据结构. 相关术语: 节点Node:组成树的基本部分.每个节点具有名称,或"键值",节点还可以保存额外数据项,数据项根据不同的 ...

  4. python tree结构_Python入门篇-数据结构树(tree)篇

    Python入门篇-数据结构树(tree)篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.树概述 1>.树的概念 非线性结构,每个元素可以有多个前躯和后继 树是n(n& ...

  5. python代码实现二叉树的镜像树

    python代码实现二叉树的镜像树 请完成一个函数,输入一个二叉树,该函数输出它的镜像.例如下图所示,左图是原二叉树,而右图则是该二叉树的镜像. 可以总结出这两棵树的根节点相同,但它们的左.右两个子节 ...

  6. JS 数据结构之旅 :通过JS实现栈、队列、二叉树、二分搜索树、AVL树、Trie树、并查集树、堆

    JS 数据结构之旅 栈 概念 栈是一个线性结构,在计算机中是一个相当常见的数据结构. 栈的特点是只能在某一端添加或删除数据,遵循先进后出的原则 实现 每种数据结构都可以用很多种方式来实现,其实可以把栈 ...

  7. 考研复习之数据结构笔记(九)树(上)(树和二叉树的概念、特征、性质及相关实例)

    目录 一.树的基本概念和术语 1.1 基本定义与特点 (1)基本定义: (2)基本特点 1.2 树的基本术语 1.3 树的基本性质 二.二叉树 2.1 二叉树的定义与性质 (1)基本概念 (2)与树的 ...

  8. 数据结构-图、二叉树、B(+)树

    线性数据结构主要用于存储相互独立的数据,但是如果数据间存在某些关系,比如常用的地图导航,从一个地区前往另一个地区需要途径很多条道路,那么途径的各条道路以及地点都是有关联的,道路的拥堵情况.地点间的距离 ...

  9. 数据结构 | 第十一章:二叉树和其他树 | 【前序遍历】【中序遍历】【后序遍历】【层次遍历】 | 并查集

    第5-10章:线性结构,元素之间存在线性次序(线性表.数组与矩阵.栈.队列.跳表和散列表 第11-15章:层次结构(二叉树和树.优先队列.竞赛树.搜索树) 文章目录 11.1 树 11.2 二叉树 1 ...

最新文章

  1. pytorchviz visdom 可视化 pytorch
  2. 如何配置jenkins 与代理服务器吗?
  3. DML、DDL、DCL的分别是什么
  4. C++的一些知识点摘抄(创建基本类 高级类)
  5. 用Java解析:您可以使用的所有工具和库
  6. 软件工程学习笔记《一》什么是软件工程
  7. 前端学习(2884):dom更新操作的实现
  8. C++ PAT 乙级 ——1002 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
  9. 以小见大:如何设计注册登录页?
  10. 全站仪坐标计算机公式,全站仪使用方法及坐标计算讲解
  11. 代码逻辑分析_双十一模块 79.34% 的代码是怎样智能生成的
  12. Ubuntu 16.04中的Dock的应用顺序调整
  13. python命名空间,类成员,对象成员
  14. Java实现在线打开word文档加盖印章/盖章/签名功能
  15. CMMB蓄势待发,模拟电视东山再起
  16. 目标跟踪(二):拓展卡尔曼滤波(EKF)
  17. MySQL 日期计算
  18. 让TQ2440也用上设备树 (device tree 操作实例3_重要,对于移植很有参考价值_code)
  19. 人工智能机器人——水中机器人
  20. 程序员杂志在线阅读 豆瓣的架构—专访豆瓣网站的技术总监洪强宁

热门文章

  1. css 引用otf文件,CSS-如何将OTF / TTF文件转换为EOT格式?
  2. yum安装php和apache先装哪个,yum如何安装apache与php
  3. 日志文件列表 读书笔记《Linux 系统管理技术手册(第二版)》
  4. stealwatch里的安全功能——ETA结果会显示加密套件以及key长度,还有流量大小(例如41MB)...
  5. 使用 Python 在 GitHub 上运行你的博客
  6. rem是如何实现自适应布局的
  7. P1219 八皇后 含优化 1/5
  8. node.js querystring
  9. [partial] C#里partial关键字的作用
  10. Chapter 3 Phenomenon——23