树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用,直观看来,树是以分支关系定义的层次结构,树结构在客观世界中广泛的存在,像是我们常见的族谱和各种社会组织结构都可以用树来形象表示,树在计算机领域中也得到了广泛的应用,如在编译程序中,可以用树来表示源程序的语法结构,又如在数据库中,树形结构也是信息的重要组织之一,
树的定义以及一些基本术语
树:树是一个拥有n>=0个节点的有限表,也就是可以为空的,
在任意一颗非空的树中有且仅有一个特定的称为根的节点;
当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2.。。Tm,其中每一个有限集合 又是一棵树,并且称为根的子树,
树的结构定义是一个递归的形式,即在树的定义中又用到树的概念,它道出了树的固有特性,
树的 节点 包含一个数据元素以及若干个指向其子树的分支,节点拥有的子树数称之为节点的度,度为0的节点称之为叶子或者终端节点,度不为0的节点称为非终端节点或者分支节点,除了根节点之外,分支节点也称为内部节点,树的度就是树内 各节点度的最大值.节点子树的根也称之为 节点的孩子,
节点的层次 从根开始定义,根为第一层,根的孩子为第二层,若某节点在第L层,则该节点子树的根一定在L+1层,其双亲在同一层的节点 叫做堂兄弟。树种节点的最大层次称为树的深度或高度。
如果将树中节点的各子树看成从左至右是有次序的(不能互换的),则称为该树为有序树,否则称之为无序树,在有序树中 最左边的子树的根称为第一个孩子,最右边子树的根称为最后一个孩子,
森林:是M棵互不相交的树的集合,对树中每一个节点而言,其子树的集合即为森林,由此可以 森林 和树相互递归来描述 树,
就逻辑结构而言,任何一颗树都可以是一个二元组 Tree = (root,F),其中root 是数据元素,称作树的根节点,F是m(m>=0)棵树的森林,F = (T1,T2,。。。。。。。Tm),0=< i <=m 其中 Ti = (ri,Fi)称作根root的第i棵子树,当m != 0时,在树根和其子树森林之间存在下列关系:
RF = {<root,ri>|i = 1,2,3,.........m. m>0}