树结构

树(Tree)结构是一种描述非线性层次关系的数据结构,其中重要的是树的概念。树是N个数据结点的集合,在该集合中包含一个根结点,根结点之下分布着一些互不交叉的子集合,这些子集合是根结点的子树。树结构的基本特征如下:

  • 在一个树结构中,有且仅有一个结点没有直接前驱,这个结点就是树的根结点。
  • 除根结点以外,其余每个结点有且仅有一个直接前驱。
  • 每个结点有任意多个直接后继。

一个树结构可以是空,此时空树种没有数据结点,也就是一个空集合。如果树结构中仅包含一个结点,那么这也是一个树,树根便是该节点自身。

从树的定义可以看出,树具有层次结构的性质。而从数学的角度来看,树具有递归的特性。在树中的每个结点及其之后的所有结点构成一个子树,这个子树也包括根结点。

基本概念
  • 父结点和子节点:每个结点子树的根称为该结点的子结点,相应的,该结点称为其子结点的父结点。
  • 兄弟结点:具有同一父结点的结点称之为兄弟结点。
  • 结点的度:一个结点所包含子树的数量。
  • 树的度:指该树所有结点中最大的度。
  • 叶结点:树中度为零的结点称为叶结点或终结点。
  • 分支结点:树中度不为零的结点称为分支结点或非终端结点。
  • 结点的层数:结点的层数从树根开始计算,根结点为第1层、依次向下为第2、3、……n层
  • 树的深度:树种结点的最大层数称为树的深度。
  • 有序树:若树中各个结点的子树是按一定次序从左向右排列的,称为有序树。
  • 无序树:若树中各结点的子树未按照一定次序排列,称为无序树。
  • 森林(forest):n(n>0)棵互不相交的树的集合。
树的表示

由于树结构不是一种线性结构,很难用数学式子来表示,这就需要采用全新的方式来表示树。一般来说,常采用层次括号法。

  • 根结点放入一对括号中;
  • 根结点的子树由左至右的顺序放入括号中;
  • 对子树做上述相同的处理。

(A(B(E)),(C(F(J),(G(K,L)),(D(H),(I(N,M))))