树的定义
树是一种常用的非线性结构。我们可以这样定义:树是n(n≥0)个结点的有限集合。若n=0,则称为空树;否则,有且仅有一个特定的结点被称为根,当n>1时,其余结点被分成m(m>0)个互不相交的子集T1,T2,…,Tm,每个子集又是一棵树。由此可以看出,树的定义是递归的。
从逻辑结构看:
1)除根外的其他结点,都存在唯一条从根到该结点的路径;
2)树是一种分枝结构 (除了一个称为根的结点外)每个元素都有且仅有一个直接前趋,有且仅有零个或多个直接后继。
树(Tree)是n(n≥0)个结点的有限集。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2…Tm.其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。例如,在图中,是有13个结点的树,其中A是根,其余结点分成3个互不相交的子集: T1={B,E,F},T2={C,G,J},T3={D,H,I,K,L,M});
T1、T2和T3都是根A的子树,且本身也是一棵树。例如T1,其根为B,其余结点分为两个互不相交的子集;T11= {E},T12={F}。 T11和T12都是B的子树。
上述树的结构定义加上树的一组基本操作就构成了抽象数据类型树的定义。
树的表示:
1)嵌套集合表示
2)凹入表示法(类似书的目录)
3)广义表表示
树的基本术语:
树的结点:包含一个数据元素及若干指向子树的分支;
孩子结点:结点的子树的根称为该结点的孩子;(直接后继)
双亲结点:B 结点是A 结点的孩子,则A结点是B 结点的双亲;(直接前趋)
兄弟结点:同一个双亲的孩子结点之间互为兄弟;
堂兄结点:双亲在同一层的结点互为堂兄弟;
祖先结点: 从根到该结点的所经分支上的所有结点;
子孙结点:以某结点为根的子树中任一结点都称为该结点的子孙
结点层次:根结点的层定义为1;根的孩子为第二层结点,依此类推;(若某结点在第k层,则其子树的根就在第k+1层)
树的深度:树中结点的最大层次(树的高度)
结点的度:结点子树的个数
树的度: 树中最大的结点度。
叶子结点:也叫终端结点,是度为 0 的结点;(终端节点)
分枝结点:度不为0的结点;(非终端节点)
有序树:如果树中每棵子树从左向右的排列拥有一定的顺序,不得互换,则称为有序树,否则称为无序树。
森林:互不相交的树集合;
森林和树之间的联系是:一棵树去掉根,其子树构成一个森林;一个森林增加一个根结点成为树。
二叉树的定义:
定义:二叉树是另一种树形结构。它与树形结构的区别是:
(1)每个结点最多有两棵子树;
(2)子树有左右之分。
二叉树也可以用递归的形式定义。即:二叉树是n(n≥0)个结点的有限集合。当n=0时,称为空二叉树;当n>0时,有且仅有一个结点为二叉树的根,其余结点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集,每个子集又是一个二叉树。
二叉树的五种形态:
二叉树的性质:
【性质1】 在二叉树的第i层上最多有2i-1个结点(i≥1)。
【性质2】 深度为K的二叉树最多有2K-1个结点(K≥1)。
(最多的话就当作满二叉树进行计算,用等比数列求和的公式进行计算)
【性质3】 对于任意一棵二叉树BT,如果度为0的结点个数为n0,度为1的结点个数为n1,度为2的结点个数为n2,则:
n0=n2+1。
(n=n0+n1+n2 --------------------- n-1=n1+2n2)
满二叉树:
满二叉树:如果一个深度为K的二叉树拥有2K-1个结点,则将它称为满二叉树。
完全二叉树:如果一颗二叉树只有最下一层结点数可能未达到最大,并且最下层结点都集中在该层的最左端,则称为完全二叉树;
二叉树的性质练习:
1.设二叉树红所有非叶结点均有非空左右子树,并且叶子结点数目为n,该棵二叉树共有多少个结点?
解:非叶子结点均有非空左右子树,说明没有度为1的结点,只有度为0与度为2的结点,根据性质三可知:n=n2+1,所以n2=n-1,所以总结点数=n+n2=2n-1。
2. 一颗完全二叉树有1001个结点,其中有多少 个叶子结点?
解:最后一个编号的叶子结点的双亲是最后一个非叶子结点编号。根据性质五可知,最后一个叶子结点编号为1001,那么他的双亲编号为1001/2=500.所以从编号501到编号1001都是叶子结点,共有1001-501+1=501个叶子节点
3. 高度为h的完全二叉树,其结点个数最多是多少?最少是多少?
解:最多的时候一定是满二叉树,即2h-1.
最少的时候是第h层只有一个叶子结点,即2h-1-1+1=2h-1个
4. 具有3000个结点的二叉树,其高度最少是多少?
解:完全二叉树时高度最少,因为211=2048,还没到达3000,212=4056,已经超越了3000,所以高度最少为12
5. 二叉树是不是度为2的树?二叉树是不是度为2的有序树?为什么?
解:不是,不是。度可以为1 ,度也可以为0。