数据结构基础篇(5)--二叉树
来源:互联网 发布:php微社区源码 编辑:程序博客网 时间:2024/05/20 20:03
一、二叉树的定义
二叉树是n个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。如下如所示
二、二叉树的特点
(1)每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。
(2)左子树和右子树室友顺序的,不能互换。
(3)二叉树的五种基本形态:
1、空二叉树
2、只有一个根结点
3、根结点只有左子树
4、根结点只有右子树
5、根结点既有左子树又有右子树
三、特殊二叉树
(1)斜树
所有的结点都只有左子树的二叉树叫做左斜树;
所有的结点都只有右子树的二叉树叫做右斜树。
斜树的特点就是每一层只有一个结点,结点的个数与二叉树的深度相同,其实线性表可以理解为树的一种极其特殊的表现形式。
(2)满二叉树
在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。
单是每个结点都存在左右子树,不能算是满二叉树,还必须要所有的叶子都在同一层上,这就做到了整棵树的平衡,基本特点如下:
a、叶子只能出现在最下一层,出现在其它层就不可能达成平衡。
b、非叶子结点的度一定是2,否则就不是平衡的。
c、在同样深度的二叉树中,满二叉树的结点个数最多,叶子点树最多。
(3)完全二叉树
对一棵具有n个结点的二叉树按层序遍历,如果编号为i(i<=1<=n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树。
满二叉树一定是棵完全二叉树,但完全二叉树不一定是满的。基本特点如下:
a、叶子结点只能出现在最下两层。
b、最下层的叶子一定集中在左部连续位置。
c、倒数第二层,若有叶子结点,一定都在右部连续位置。
d、如果结点的度为1,则该结点只有左孩子,即不存在只有右子树的情况。
e、同样结点树的二叉树,完全二叉树的深度最小。
文章只是作为自己的学习笔记,借鉴了网上的许多案例,如果觉得阔以的话,希望多交流,在此谢过…
- 数据结构基础篇(5)--二叉树
- 数据结构基础篇(6)--二叉树特性
- 数据结构基础(4)-->二叉树
- 数据结构_二叉树基础
- 数据结构基础 复原二叉树
- 数据结构基础算法-二叉树
- 二叉树基础-二叉树类模板的实现(数据结构基础 第5周)
- 二叉树基础-文本二叉树(数据结构基础 第5周)
- 【数据结构基础篇】树和二叉树之间的转换
- 数据结构基础篇(7)--线索二叉树与哈夫曼树
- 算法基础---数据结构---树和二叉树
- 数据结构基础之树、二叉树
- 数据结构基础(16) --树与二叉树
- 数据结构基础(16) --树与二叉树
- 数据结构基础(16) --树与二叉树
- 数据结构基础 之 二叉堆 概念篇
- .net 数据结构与算法基础:二叉树
- 【数据结构】第4周 二叉树基础
- PAT-A 1033. To Fill or Not to Fill (25)
- 《ACM程序设计》书中题目 N
- view 相关内容代码片段笔记
- HDU字符串题解
- 一致性HASH算法
- 数据结构基础篇(5)--二叉树
- TensorFlow 实战(二)—— tf.train(优化算法)
- 《Understanding the difficulty of training deep feedforward neural networks》笔记
- 交换排序之冒泡与快排C/C++
- python知识点:可变对象和不可变对象
- window下线程同步之(Mutex(互斥器) )
- C++ 高效编程不得不看的九本开源书籍
- struts2-零配置
- java设计模式之三大分类,六大原则