今天开始,将进入树这一重要的数据结构的学习。
1
树的定义和基本术语
树是一种一对多的数据结构,是n个节点的有限集。在任意一颗非空树中:
(1)有且仅有一个特定的根结点;
(2)其余结点可分为有限个互不相交的有限集,且它们本身又是一颗树,称作子树;
由上我们可以看出,树本身的定义也是一种递归定义。在后面,我们对于树的处理,会常常使用到递归思想。
树并不仅仅有一种表示方法。除了常规的直观的表示方法外,为了表示树,我们还可以以嵌套集合、广义表、凹入表示法等许许多多的方法进行表示。
以下关于树的概念应该清晰掌握:
结点的度
树的度
叶子/终端结点
非终端结点/分支结点
孩子
双亲
兄弟
祖先
子孙
层次(从第一层开始)
堂兄弟
深度
有序树与无序树
森林
如果遗忘请参阅书本(下图):
2
二叉树
二叉树是另一种树形结构,它的特点是至多只有两颗字数,即树的度不超过2,并且,它的子树有左右之分,次序不能颠倒。
要完成树的操作,我们必需要用到二叉树,因此二叉树在树中有着重要的地位。
以下定义需要熟悉,不熟悉自行搜索
满二叉树(全部都有)
完全二叉树(中间不漏)
二叉树的性质
||性质一|| 在二叉树的第i层至多有2^(i-1)个结点(i>=1)
||性质二||深度为k的二叉树至多有2^k-1个结点(k>=1)
||性质三||对任何一颗二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1
对性质三的解释:在二叉树中只有度为2的结点可以使数发生扩张,每出现一个2度结点,就多一片叶子,加上最初那一片叶子,就是总叶子数。
||性质四||具有n个结点的完全二叉树的深度为⌊log2(n)⌋+1
性质四证明:
2^(k-1)-1
k-1<=log2(n)
k=⌊log2(n)⌋+1
||性质五||如果对一棵有n个结点的完全二叉树(其深度为⌊log2(n)⌋+1)的结点按层编号,则对任意结点有:
(1)如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲PARENT(i)是结点⌊i/2⌋
(2)如果2i>n,则结点i无左孩子(结点i为叶子结点),否则左孩子的结点是2i;
(3)如果2i+1>n,则结点i无右孩子,否则其右孩子是结点2i+1;
下一篇推送将介绍二叉树基本操作的有关算法及代码实现