树的基本概念
树的定义
树是 n (n >= 0) 个结点的有限集。当 n = 0 时,称为空树。在任意一棵非空树中应满足:
1)有且仅有一个特定的称为根的结点
2)当 n > 1 时,其余结点可分为 m (m > 0) 个互不相交的有限集,其中每个集合本身又是一棵树,并且称为根的子树
显然,树的定义是递归的,即树在定义中又用到了其自身,树是一个递归的数据结构。树作为一种逻辑结构,同时也是一种分层结构,具有以下两个特点:
1)树的根结点没有前驱,除根结点外的所有结点有且只有一个前驱
2)树中所有结点可以有零个或多个后继
基本术语
1) 度:树中一个结点的孩子个数称为该结点的度,树中结点的最大度数称为树的度
2) 分支结点:度大于0的结点称为分支结点
3) 叶子结点:度为0的结点称为叶子结点
4) 有序树:树中结点的各子树从左到右是有次序的,不能互换
5) 无序树:树中结点的各子树从左到右没有次序的,可以互换
6) 路径:树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成
7) 路径长度:是路径上所经过的边的个数
8) 深度:从根结点开始自顶向下逐层累加
9) 高度:从叶子结点开始自底向上逐层累加
树的性质
1)n 个结点的树有 n - 1 条边
2)树中的结点数等于所有结点的度数加一
3)度为 m 的树中第 i 层上至多有 m i − 1 m^{i-1} mi−1 个结点
4)高度为 h 的 m 叉树至多有 ( m h − 1 m^{h} - 1 mh−1) / ( m − 1 m - 1 m−1) 个结点
5)具有 n 个结点的 m 叉树的最小高度为 ⌈ \lceil ⌈ l o g m ( n ( m − 1 ) + 1 ) log_m(n(m-1)+1) l