树的定义:
树是n(n>=0)个结点的有限集合,n=0时,称为空树,这是一种特殊情况。
在任意一颗非空树中,应该满足:
- 有且仅有一个特定的称为根的结点;
- 当n>1时,其余节点可分为m(m>0)个互不相交的有限集合T1,T2...Tm,其中每个集合本身又是一颗树,并且称为根结点的子树;
显然,树的定义是递归的,是一种递归的数据结构。树作为一种逻辑结构,同时也是一种分层结构,具有一下两个特点:
- 树的根节点没有前驱结点,除根结点外的所有结点有且只有一个前驱结点;
- 树中所有结点可以有0个或者多个后继节点;
- 具有n个结点的树中有n-1条边;
树的基本术语:
一:
考虑结点28,根节点23到结点28的唯一路径上的任意结点称为结点28的祖先结点,而结点28是结点该路径上其他节点的子孙结点。
路径上距离结点28最近的结点46称为结点28的双亲结点,而结点结点28称为结点46的孩子结点。根节点23是唯一没有双亲的结点。
有相同双亲的结点称为兄弟结点。
二:
树中一个结点的子结点个数称为该结点的度
树中结点最大的度数称为树的度
三:
度大于0的结点称为分支节点(非终端结点)
度为0的结点(没有子女结点)的结点称为叶子结点(终端结点)。
在分支结点中,每个结点的分支数就是该结点的度
四:
结点的层次从根结点开始,根结点为第1层(或者第0层),它的子结点为第2层(或者第1层),以此类推
结点的深度是从根结点开始自顶向下逐层累加的(如上图结点46的深度是3)
结点的高度是从叶子结点自底向上逐层累加的(如上图结点46的高度是2,结点10的高度是1)
五:
有序树:树中结点的子树从左到右是有次序的,且不能交换。
无序树:上述相反。
六:
路径:树中两个结点之间经过的结点序列称之为路径
路径长度:路径上所经过的边的个数
七:
森林:森林是m(m>=0)颗互不相交的树的集合。
树的基本性质:
- 树中的结点数等于所有结点的度数加1;
- 度为m的树中第i层上至多有m^(i-1)个结点(i>=1);
- 高度为h的m叉树至多有(m^h-1)/(m-1)个结点;
- 具有n个结点的m叉树的最小高度为log m(n(m-1)+1)向下取整;