数据结构-王道2017-第4章 树与二叉树
1.树的定义
树是N(N>=0)个结点的有限集合,N=0时,称为空树,这是一种特殊情况。在任意一棵非空树种应满足:
1)有且仅有一个特定的成为根的结点
2)当N>1时,其余结点可分为m(m>0)个互不相交的有限集合T1,T2,T3..Tm,其中每一个集合,本身又是一棵树,并且称为根节点的子树。显然树的定义是递归的,是一种递归的数据结构。树作为一种逻辑结构,同时也是一种分层结构。
特点:
1)树的根结点没有前驱结点,除根以外的所有节点有且只有一个前驱结点。
2) 树中所有结点可以有零个或多个后继结点
树适合表示有层次结构的数据。
3.树中一个结点的子结点个数称为该结点的度,树中结点的最大度数(某一个,不是全部结点)称为树的度。
度大于0的结点称为分支结点(也称为非终端结点);度为0的结点称为叶子结点。在分支结点中,每个结点的分支数就是该结点的度。
结点的层次从树根开始定义,根结点为第一层
结点的深度是从根结点开始自顶向下逐层累加的
结点的高度是从叶结点开始自底向上逐层累加的
树的高度(又称深度)是树中结点的最大层数
4.有序树和无序树:树中结点的子树从左到右是有次序的,不能交换,这样的树叫做有序树,有序树中,一个结点其子结点按从左到右顺序出现是有关联的。反之,称为无序树,
路径和路径长度:树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。
注意:由于树中的分支是有向的,即从双亲结点指向孩子结点,所以树中的路径是从上向下的,同一双亲结点的两个孩子结点之间不存在路径
5.森林:森林是m(m>=0)棵互不相交的树的集合。森林的概念与树的概念十分相近,因为只要把树的根节点删去就变成了森林,反之,只要给n棵独立的树加上一个结点,并把这n棵树作为该结点的子树,则森林就变成了树
6.树的性质:
1)树中的结点数等于所有结点的度数加1
2)度为m的树中第i层上至多有m^i-1(i>=1)
3)高度为h的m叉树至多有(m^h - 1)/(m-1)个结点
4) 具有n个结点的m叉树的最小高度为向上取整(⌈logm(n(m-1)+1)⌉)
7.树的路径长度是从树根到每一个结点的路径长度的总和