数据结构-树的概念基础

173 阅读3分钟

树的定义和逻辑表达

相对于之前的顺序表、栈、队列等结构,树是一种分层结构,适合组织那些具有分支层次关系的数据。在数据结构层面上,数是具有n个结点的有限集(当n为0时,这棵树称之为空树)。每个树只有一个根结点,而根结点的所有分支又可以作为这棵树的一个子树。

通过树的结构可以看出,在计算机中,树是建立在递归算法的基础之上的,即每个树都可以生成多个子树这样不断递归,直到最后子树最后的结点是叶子结点(即该结点向下不构成新的子树,没有后继结点)。

每一个结点有直接关系的只有它的前驱结点和后继结点(即树的双亲和子结点),结点和其同一层次之间的结点(即兄弟结点)没有直接关系(如果有,则该逻辑结构不是树,而是以后要说到的图)。如果两个结点的前驱结点是同一个结点(即双亲结点一致),则将这个结点称之为当前结点的兄弟结点。

由于树的结点只联通其前驱结点和后继结点,所以无论有多少(n)个结点,只要逻辑结构是树,那么这种数据结构都只有n-1条边。

树的结构性质

结点

和之前所提到的大多数数据结构一样,构成树的最小单位称之为结点。两联通结点之间的关系可能是前驱或后继。一个结点的前驱结点称为双亲结点,后继结点称为孩子结点。

一个结点的孩子结点的个数,称为该结点的度。如果是一棵树当中,树中孩子结点最多的结点的度称为这棵树的度。

度大于0的结点称为分支结点(有的地方称之为树枝结点),度为0的结点称为叶子结点。

高度和深度

一般地,因为树是分层结构,它的层数定义是自上而下的(以根结点为准)。根结点所在的层数是第一层,根结点的孩子结点是第二层,以此类推。

一个结点的深度是自上而下的(从叶子结点开始到该结点),高度是自下而上的(从根结点开始到该结点)。

一棵树的高度和深度是该棵树中结点的最大层数(从根结点到叶子结点)。

顺序和路径

如果一棵树的孩子结点它和兄弟结点的左右次序不能替换,那么这个树称之为有序树;如果可以替换称之为无序树。

两个结点之间所经过边的数目,称之为结点到结点之间的路径。

森林

就像我们平时生活当中的那样,多个不相交的树的集合我们称之为森林。

小结

以上就是关于树的基本概念的叙述,因为树的样式多种多样,很难用一个统一的代码来实现各种不同的树。下篇文章我将从计算机中最常见的树——二叉树来讲述,届时将会有二叉树在计算机当中的代码定义。