要想学好数据结构中的树,就必须要理解树的基础概念,要不然会越学越乱
树的简介
树:是n(n>=0)个结点的有限集合,n=0时,称为空树,树是属于逻辑结构
而任意非空树应满足:
1)有且仅有一个特定的称为根的结点
2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集合,其中每一个集合本身又是一棵树,称为根结点的子树
结论:n个结点的树中只有n-1条边
以下图为例子,理解树的概念
树的基本概念
1、祖先结点和子孙结点:如k是子孙结点,ABE是k的祖先结点
2、双亲结点和孩子结点:如k是E的孩子结点,E是k的双亲结点
3、兄弟结点:有共同的双亲结点称为兄弟结点,如K和L是兄弟结点
4、度:树中一个结点的子结点的个数称为该结点的度,如B结点的度为2
5、树的度:树中最大度数称为树的度,如上图树的度为3
6、分支结点:度大于0的结点称为分支结点(有孩子结点),如ABCDE
7、叶子结点:度为0的结点称为叶子结点(没有孩子结点),如FGHIJKL
注意:有的教材称第一层为第0层,需要注意一下,这里第一层定义为第一层
8、结点的层次:如A结点在第一层,B结点在第二层,E结点在第三层,K结点在第四层
9、结点的高度:从叶子结点开始自低向上逐层累加的,如B结点的高度为3,
10、结点的深度:从根结点开始自顶向下逐层累加的(和结点的高度刚好相反),如B结点的深度是2
树的高度(深度)是树中结点的最大层数
11、有序树:如把B和D的位置调换后,上图的树就变为另一棵树了,那么上图的树就是有序树
12、无序树:如把B和D的位置调换后,上图的树还是同一棵树,那么上图的树就是无序树
13、路径:树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的(路径一定是自上而下的)
14、路径长度:路径上所经历边的个数,如A到E这条路径有两条边,所以路径长度为2
15、森林:m(m>=0)棵互不相交的树的集合,树和森林之间是可以相互转换的,如把上图根结点A去掉,就变成由三棵树组成的森林,下图加上一个根结点A就变成一棵树
树的性质
1、树中的结点数等于所有结点的度数加1
2、度为m的树中第i层上至多有m^(i-1)个结点(i>=1)
3、高度为h的m叉树至多有(m^h)/(m-1)个结点(结论3是由结论2衍生出来的)
4、具有n个结点的m叉树的最小高度为,向上取整logm(n(m-1)+1)
解释性质1:所有的叶子结点的度为0,所以不考虑叶子结点,只考虑分支结点。E的度为2(分别是K、L),B的度为2(E、F),C的度为1(G),D的度为3(H、I、J),A的度为3(B、C、D),这时会发现有一个结点没包含进来,就是根结点A,所以要加1。这就是这条结论的由来
解释性质2:假设每个结点都有最大的度m。第一层只能有一个结点,第二层的最多结点数为m,第三层为m*m,以此类推,第i层最多结点数为m^(i-1)
解释性质3:就是把结论2中的所有结点加起来,就可以得到这条结论了(使用高中学过的等比数列求和公式推导)
错位相减法
Sn=a1+a2 +a3 +…+an
Snq= a1q+a2q+…+a(n-1)q+anq= a2 +a3 +…+an+anq
以上两式相减得(1-q)Sn=a1-anq
解释性质4:结论4是以结论3为基础推导出来的,由结论3可知 n=(m^h-1)/(m-1),为什么要向上取整呢?因为有小数的话,证明最后一层有结点
如果性质2、3、4还不理解,可以举个例子出来,如下图,把公式代进去,可以加深理解
本文章参考于《王道考研》
欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感谢。