树:
n个结点组成的有限集合。
(1)有且仅有一个特定的称为根的结点。
(2)当n>1时,其余结点可分为m个互不相交的有限集合,其中每个集合本身又是一棵树,称为根节点的子树。
注意:n个结点的树中只有n-1条边。除根节点外,每个结点都有一个前驱边,因此n个结点的树中n-1条边。
树的基本概念:
祖先结点和子孙结点
双亲结点和孩子结点
兄弟节点
度:树中一个结点的子结点的个数称为该结点的度。结点的度即为它孩子结点的个数。
树的度:所有结点的最大度数。
度大于0的结点称为分支结点(存在分支结点)。
度为0的结点称为叶子结点。
结点的层次:即结点存在多少层
结点的高度:从叶子结点开始(从下往上)
结点深度:从根结点开始(从上往下)
树的高度(深度)是树中结点的最大层数。
有序树和无序树:即兄弟结点的不同位置如果是不同的树,则是有序树;如果是同一个树,则是无序树。
路径:树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的(不包含边)。
树中的分支是有向的,即从双亲结点指向孩子结点,所以路径一定是自上而下的。
路径为(A->B->E)是有向路径。
路径长度:路径所经历边的个数。上述路径边个数为2。
森林:m棵互不相交的树的集合。
森林通过添加一个根结点可以变为树;树去掉一个根可以变为森林。
森林:
树:
树的性质:
(1)树的结点数等于所有结点的度数加1。
(2)度为m的树中第i层至多有 m i − 1 m^{i-1} mi−1个(i>=1)
(3)高度为h的m叉树至多有( m h m^h mh-1)/(m-1)个结点。
(4)具有n个结点的m叉树的最小高度为[ l o g m n ( m − 1 ) + 1 log_m{n(m-1)+1} logmn(m−1)+1]。
上述结果如下求出:
( m h m^h mh-1)/(m-1) = n从而推出h=[ l o g m n ( m − 1 ) + 1 log_m{n(m-1)+1} logmn(m−1)+1]。