首先树一般是用来存储具有分支层次关系的元素
然后就是树的一些属于,根节点,孩子结点,父母节点,祖先,兄弟节点,堂兄弟结点等不过多赘述,王道书上有详细描述
比较重要的几个概念:
1,结点的度:结点的度指的是这个结点的直接对应的孩子结点有几个
2,树的度:一棵树的度为该树所含所有结点的度中的最大的度
3,所有结点的度数的和+1=总共结点个数(有多少个结点)
举个最简单的例子三个结点的树如下图
在这张图中有三个结点,用两条边连接起来,我们其实就可以通俗的理解为:所有结点的度数的和就是树有多少条边,边数加一就是结点个数
4,m叉树与度为m的树的区别:
(1)m叉树:指的是所有结点的度数都小于等于m且可以为0,因此m叉树可能出现空树的情况,也就是结点度数范围为[0,m]
(2)度为m的树:指的是所有结点的度数都小于等于m且可以为0,但是必须至少有一个结点的度数是等于m的,所以不会出现空树的情况
5,度为m的树(或者m叉树)第i层上至多有个结点
第一层有一个,第二层最多有m个,第三层最多有m*m个,以此类推
6,高度为h的m叉树(或者高度为h的度为m的树)最多有(-1)/(m-1)个结点
此题高度已经固定了,所以要想结点最多只需要填满所有结点的度即可,即所有结点的度都为m,所以总体看来就是一个等比数列求和
7,高度为h度为m的树(这里就不说m叉树了因为m叉树可能出现空树的情况因此也就没有意义了)最少有h-1+m
要想结点最少只需要利用树的度的定义来看就行了,至少有一个结点度为m,那我们就设置只有一个结点的度为m即可,也就是说这棵树共有h层只有一层有每个结点其余h-1层的每一层都只有一个结点
8,度为m,具有n个结点的树的最小高度为(记住讨论最小量时都不说m叉树,因为无意义)
结点数固定因此只需要保证每一层的结点数目最大即可保证高度最小,设最小有h层,即填满h-1层,h层有数据即可,(-1)/(m-1)<n<(-1)/(m-1),解不等式即可
9,度为m,具有n个结点的树的最大高度(不是m叉树)为n-m+1
只需要将m个结点放一层,其余n-m个结点各放一层