####一、 什么是树?
1,生活中的树 :
我们知道,对于一棵树,无论大小, 都是由数根,树干,节点以及树叶构成,那么,在数据结构中,也存在树这种结构,与之不同的是,它是一棵倒立的树 ,模型如下所示:
2,数据结构中的树:
3,树的基本概念:
以上图中的树为例:
树:由N(N>=0)个结点构成的集合,N=0时是一棵空树 ,那么对N>1的树做出以下解释:
1、根节点:故名思义,根节点相当于一棵树的根,是树的基础,它是一个特殊的结点,根节点没有前驱结点,是本树所有结点的祖先。
如:A 就是该树的根节点
2、除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中:
(1)每一个集合Ti(1<= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以没有后继,也可以有多个后继。
B,C,D是A的子树,各自又是以自身为根节点的树 ;
由此看出:树是递归定义的。
3,结点:结点包括一个数据元素及若干指向其他子树的分支(指针(索引))。
(A,B,C,D,E,F,G,H,I)
4, 叶结点:度为0的结点称为叶结点,叶节点也称为终端节点。
(E,F,G,H,I)
5, 分支结点:度不为0的结点称为分支结点,分支结点也称为非终端节点,一棵树中除叶节点外的所有节点都是分支结点。
(A,B,C,D)
6, 祖先结点:从根节点到该结点所经分支上的所有节点。
(E的祖先结点是A,B)
(F的祖先结点是A,C)
7,子孙结点:以某节点为根节点的子树中所有节点。
(A的子孙结点为B,C,D,E,F,G,H,I)
8,双亲结点:树中某节点有孩子结点,则这个结点称为它孩子结点的双亲结点,双亲结点也称为前驱结点。
(E的双亲结点是B,B的双亲结点是A)
9, 孩子结点:树中一个节点的子树的根节点称为该结点的孩子结点,孩子结点也称为后继结点。