前言
接下来我们进入到树和二叉树的学习
方法
1.树的概念
树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。
父子关系在树的结点之间建立了一个层次结构。
树的结点包含了一个数据元素及若干指向其子树的若干分支。
在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或简称为树根。
我们可以形式的给出树的递归定义如下:
树(tree)是n(n>=0)个结点的有限集,它包含以下几种:
1)空树(n=0)
2)非空树(n>0)
例如: (a)是一课空树,(b)是只有一个根结点的树,(c)是一棵有十个结点的树,其中A是根
2.结点的度与树的度
结点拥有的子树的数目称为该结点的度(Degree)
度为0的结点称为叶子结点或者终端结点
度不为0的结点称为非终端结点或者分支结点,除根之外的分支结点称为内部结点
树内各结点的度的最大值称为树的度
3.结点的层次和树的深度
结点的层次(level)从根开始定义,层次数为1的结点是根结点,其子树的根的层次数为2
树中结点的最大层次数称为树的深度或高度
父亲、儿子、兄弟
父亲(parent):一个结点的直接前驱结点
儿子(child):一个结点的直接后继结点
兄弟(sibling):同一个父亲结点的其他结点
例如:结点A是结点B、C、D的父亲,结点B、C、D是结点A的孩子
由于结点H、I、J有同一个父结点D,因此它们互为兄弟
祖先、子孙、堂兄弟
结点的祖先是从根结点到该结点路径上的所有结点
以某结点为根的树中的任意结点都称为该结点的子孙
父亲在同一层次的结点互为堂兄弟
例如:结点K的祖先为E、B、A,结点B的子孙为E、F、K、L
K、L、M互为堂兄弟
4.有序树、M叉树、森林
如果将树中结点的各子树看成是从左至右是有次序的,则称该树为有序树
若不考虑子树的顺序,则为无序树
对于有序树,我们可以明确的定义每个结点的第一个孩子,第二个孩子等,直到最后一个孩子
若不特别指明,我们讨论的都是有序树
树中所有结点的最大度数为m的有序树称为m叉树
森林(forest)是m(m>=0)棵互不相交的树的集合,对树中每个结点而言,其子树的集合称为森林
树和森林的概念相近。删去一个树的根,就得到一个森林。反之加上一个结点为树根,森林就变为一棵树