暑假到了,相信已有部分大学生已放假了吧,虽然放假了,但是我们依旧要坚持学习哦,那么我们现在就进入暑假第一篇c/c++系列的文章。
二叉树的概念
树是一种
非线性
的数据结构,它是由
n
(
n>=0
)个有限结点组成一个具有层次关系的集合。
把它叫做树是因
为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的
。
有一个
特殊的结点,称为根结点
,根结点没有前驱结点
除根结点外,
其余结点被分成
M(M>0)
个互不相交的集合
T1
、
T2
、
……
、
Tm
,其中每一个集合
Ti(1<= i
<= m)
又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有
0
个或多个后继
因此,
树是递归定义
的。
树的图
![](https://img-blog.csdnimg.cn/direct/3fc0ae72ffb24d88a2d3e9faa3083fab.png)
树的相关概念
结点的度
:一个结点含有的子树的个数称为该结点的度; 如上图:
A
的为
6
叶结点或终端结点
:度为
0
的结点称为叶结点; 如上图:
B
、
C
、
H
、
I...
等结点为叶结点
非终端结点或分支结点
:度不为
0
的结点; 如上图:
D
、
E
、
F
、
G...
等结点为分支结点
双亲结点或父结点
:若一个结点含有子结点,则这个结点称为其子结点的父结点; 如上图:
A
是
B
的父结点
孩子结点或子结点
:一个结点含有的子树的根结点称为该结点的子结点; 如上图:
B
是
A
的孩子结点
兄弟结点
:具有相同父结点的结点互称为兄弟结点; 如上图:
B
、
C
是兄弟结点
树的度
:一棵树中,最大的结点的度称为树的度; 如上图:树的度为
6
结点的层次
:从根开始定义起,根为第
1
层,根的子结点为第
2
层,以此类推;
树的高度或深度
:树中结点的最大层次; 如上图:树的高度为
4
堂兄弟结点
:双亲在同一层的结点互为堂兄弟;如上图:
H
、
I
互为兄弟结点
结点的祖先
:从根到该结点所经分支上的所有结点;如上图:
A
是所有结点的祖先
子孙
:以某结点为根的子树中任一结点都称为该结点的子孙。如上图:所有结点都是
A
的子孙
森林
:由
m
(
m>0
)棵互不相交的树的集合称为森林;
虽然这里的相关概念有点多但实际上比较重要的点也就几个,大家简单看一下即可
当然有几个还是比较重要的点,我给大家总结一下
树的相关概念总结
节点的度:一个节点有多少个子树
叶节点:没有孩子的节点
根节点:有孩子的节点
树的高(深)度:从第一层开始数,到没有子节点的一层结束
树的表示
树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,
既然保存值域,也要保存结点和结点之间
的关系
,实际中树有很多种表示方式如:双亲表示法,孩子表示法、孩子双亲表示法以及孩子兄弟表示法
等。我们这里就简单的了解其中最常用的
孩子兄弟表示法
。
typedef
int
DataType
;
struct
Node
{
struct
Node
*
firstChild1
;
//
第一个孩子结点
struct
Node
*
pNextBrother
;
//
指向其下一个兄弟结点
DataType data
;
//
结点中的数据域
};
![](https://img-blog.csdnimg.cn/direct/f01f5f16632844b9ac17f9694f6f9be4.png)
2.二叉树概念及结构
2.1概念
一棵二叉树是结点的一个有限集合,该集合
:
1.
或者为空
2.
由一个根结点加上两棵别称为左子树和右子树的二叉树组成
![](https://img-blog.csdnimg.cn/direct/8fbd36acb9b1404aa8c755b6bcc96c45.png)
从上图中我们可以看到:
二叉树不存在度大于2的节点,且有左右之分,次序不可以颠倒,因此二叉树又是有序树
那么二叉树又是由哪些复合而成的呢?
![](https://img-blog.csdnimg.cn/direct/db8033ed125441f490422288aab772fe.png)
从图中可知由空树、根节点、左、右子树等复合而成
特殊二叉树
1.
满二叉树
:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是
说,如果一个二叉树的层数为
K
,且结点总数是2的k次-1
,则它就是满二叉树。
2.
完全二叉树
:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为
K 的,有n
个结点的二叉树,当且仅当其每一个结点都与深度为
K
的满二叉树中编号从
1
至
n
的结点一一对
应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。
![](https://img-blog.csdnimg.cn/direct/2dd24c11a88e4908a6cfbd217e6d847d.png)
二叉树的性质
1.一棵非空的二叉树的第i层上最多有2的(i-1)次个节点
2.深度为h的二叉树最大的结点个数是2的h次 - 1
3.如果度为0其叶结点个数为 , 度为2的分支结点个数为 ,则有 = +1
二叉树的存储结构
顺序存储
链式存储
那么二叉树真的讲完了吗,不其实才刚刚开始。欲知后事如何且听下回讲解