树形结构属非线性结构,常用的树性结构有树和二叉树。树形结构可以表示元素或节点之间的一对多关系。
树
树是由n(n≥0)个节点组成的有限集合(记为T)。如果n=0,它是一棵空树,这是树的特例。如果n>0,这n个节点中存在(且仅存在)一个节点作为树的根节点(简称为根root),其余节点可以分为m(m≥0)个互不相交的有限集T1,T2,…,Tm,其中每个子集本身又是一颗符合本定义的树,称为根的子树。
树的定义是递归的,因为在树的定义中又用到树的定义。它刻画了树的固有特性,即一棵树是由若干棵互不相交的子树构成,而子树又由更小的若干棵子树构成。
树是一种非线性数据结构,具有以下特点:它的每一个节点可以有零个或多个后继节点,但有且只有一个前驱节点(根节点除外);这些数据节点按分支关系组织起来,清晰地反映了数据元素之间的层次关系。可以看出,数据元素之间存在一对多的关系。
ADT Tree
{
数据对象:D={ai|1≤i≤n,n≥0,ai 为ElemType类型}//ElemType是自定义的类型标识符
数据关系:R={< ai,aj>| ai,aj∈D,1≤i≤n,1