1、树的定义
树(tree)是n(n>=0)个节点的有限集,它或为空树(n=0),或为非空树。对于非空树T有以下性质:
1、有且仅有一个称之为根的节点
2、除根节点以外的其余结点可分为m(m>0)个互不相交的有限集T1,T2,T3···,Tm,其中,每个集合本身又是一棵树,并且称为根的子树。
图1
树的结构定义是一个递归的定义,即在树的定义中又用到树的定义。
树还有其他的表示形式,例如嵌套集合与凹入表示法:
2、树的基本术语
1)节点
树中的一个独立单元。包括一个数据元素及若干指向子树的分支,如图1中的A,B,C等。
2)节点的度
节点拥有的子树数称为节点的度。如图1中A的度为6,D的度为1,B的度为0。
3)树的度
树的度是树内各个节点度的最大值。如图1中的树的度为6。
4)叶子
度为0的节点称为叶子或终端节点。如图1中节点B,C,H,I,G等都是树的叶子。
5)非终端节点
度不为0的节点称为非终端节点或分支节点。出根节点外,非终端节点也称为内部节点。
6)双亲和孩子
节点的子树的的跟称为该节点的孩子,相应的,该节点称为孩子的双亲。例图1中的E的双亲为A,E的孩子有I,J。
7)兄弟
同一个双亲的孩子之间互称兄弟。如图1中B,C,D互称为兄弟。
8)子孙
以某节点为根的子树中的任一节点都称为该节点的子孙。如图1中E节点的子孙为I,J,P,Q。
9)祖先
从根到该节点所经分支上的所有节点。如图一中P的祖先为A,E,J。
10)层次
节点的层次从根开始定义,根为第一层,根的孩子为第二层。树中任意节点的层次等于其双亲节点的层次加一。
11)堂兄弟
双亲在同一层的节点护卫堂兄弟。如图1中J与H,I,K,L,M,N互为堂兄弟。
12)树的深度
树中节点的最大层次称为树的深度,如图1中树的深度为4。
13)有序树与无序树
如果将树中节点的各子树看成从左至右是有次序的(不能互换),则称该树为有序树,否则称为无序树。在有序树中最左边的的子树的根称为根的第一个孩子,最有右边的称为最后一个孩子。
14)森林
m(m>=0)棵互不相交的树的集合。对树中的每个节点而言其子树的集合即为森林。因此也可以用森林和树相互递归定义来描述树。
3、二叉树
1.二叉树的定义
二叉树(Binary Tree)是n(n>=0)个节点的有限集合,该集合为或者为空集(称为空二叉树),或由一个根节点和两个互不相交的、分别为根节点的左子树和右子树的二叉树组成。
2.二叉树的特点
1)每个节点最多有两棵子树,所以二叉树中不存在度大于2的节点。注意不是只有两颗子树,而是最多有两颗子树。可以没有子树或只有一棵子树。
2)左子树与右子树都是有顺序的词组不能颠倒。
3)即使树中某一节点只有一颗子树,也要区分他是左子树还是右子树。
3.二叉树的5种基本形态
1)空二叉树
2)只有一个根节点
3)根节点只有左子树
4)根节点只有右子树
5)根节点既有左子树也有右子树
只有三个节点的树和二叉树各有几种形态?
树:
二叉树:
可以体现出二叉树只有一个子树是也要区分是左子树还是右子树的特点。