树的定义
现实中有很多一对多的线性结构,我们需要研究这种一对多的数据结构——“树”。
树的定义:树是n个结点的有限集。n=0时称为空树。在任意一颗非空树中:① 有且只有一个特定的称为根(root)的结点;②当n>1时,其余节点(非根结点)可分为m个互不相交的有限集T1、T2、…、Tm,其中每一个集合本身又是一棵树,并且称为根的子树,如下图所示:
对于上图的树来说,结点b、d、e组成了根结点的子树T1;c、f组成了根节点的子树T2。而子树T1和T2本身也是一颗树,对于树T1来说,b结点是其根节点。
需要注意的是:
-
n>0时,根结点只有一个,不可能存在多个根结点。
-
子树个数m>0时,子树的个数没有限制,但是子树不可能互相相交, 下图的结构就不符合树的定义,因为有相交的子树。
1.结点的分类
某个结点拥有的子树的个数称为结点的读。度为0的结点称为叶子结点;度不为0的结点称为非终端结点或分支结点。除根结点之外,分支节点也成为内部节点。
树的度是树内各结点度的最大值。
例如下图的树:
这棵树的结点为树内各节点度的最大值,即3.
2.节点间的关系
节点之间存在如下关系:
- 结点的子树的根称为该节点孩子,相应地,该节点称为孩子的双亲。
- 同一双亲的孩子之间互称兄弟。
- 结点的祖先是从根到该节点所经分支上的所有结点,以某结点为根的子树中任一节点都称为该节点的子孙。
例如下图的树:
3.树的其他相关概念
①结点的层次
- 结点的层次从根开始定义起,根为第一层,根的孩子为第二层。若某结点在第l层,其子树就在第l+1层。
- 双亲在同一层的结点互为堂兄弟。
-
树中的结点最大层次称为树的深度或高度。
②左序树和无序树
- 如果树中结点看成从左往右有次序,不能互换的,称为有序树。
- 树中结点左右顺序可以互换,称为无序树。
③森林:m棵互不相交的树的集合称为森林。
如上图的子树T1和T2其实就是森林。