首先我们要知道的是二叉树和度为2的树是不一样的,度为2的树要求在树中必须要有一个度为2的结点,但是二叉树只需要树中所有结点都小于等于2即可(有一点需要说明一下,就是m叉树会出现空树的情况,我实在是没想到选择题里面有一题问你空树的定义,空树的定义就是意味着二叉树没有任何结点)
满二叉树与完全二叉树
满二叉树:满二叉树意思就是对于高度为h的二叉树每一层结点都填满了总共-1个结点,计算公式见树的概念那一章,对满二叉树进行编号,根结点编号为1,从上至下从左往右编号,对于编号为i的结点,他的双亲结点编号为[i/2],他的左孩子结点编号为2i,他的右孩子结点编号为2i+1,注意这个规律的大前提是树是一棵满二叉树
完全二叉树:完全二叉树有以下几条规则,
第一条,其结点序号必须是一个接着一个的不可以跳序号,就是说树中若已经有了1-5编号结点,如果你想要树中有7号结点,必须得先有6号结点,其结点必须是从上至下从左往右出现,先有左孩子再有右孩子
第二条,若完全树有n个结点则前[n/2]个结点(包括[n/2])必为分支结点,就是非叶子结点,编号大于[n/2]的结点都为叶子结点
第三条,所有的叶子结点只可能出现在倒数第二层和最后一层
第四条,度为1的结点只会有0个或者1个
第五条,若n为偶数则会有一个度为1的结点且这个结点只会是最后一个结点,若n为奇数则结点度只有2和0
第六条,对于编号为i的结点,其双亲编号为[i/2],其左孩子编号为2i,右孩子编号为2i+1,这一条和满二叉树一样
第七条,判断某个结点在哪一层,对于编号为i的结点,其层数为,怎么算的,首先编号-1<i<=-1,书上写了两个解法一种是直接对该式计算得<=h<+1,直接算的话则h=,还有一种就是写成<=i<,解得<h<=+1则h=+1,我觉得对于两种算法第一种属于是会出现空树的情况下使用,这里既然已经说了编号i所以一定是有结点的,而第二种就对应了不可能出现空树的情况,所以计算编号为i的结点在哪一层我们用+1计算,而接下来我们讨论的第二个问题就是要用到第一个式子。
第八条,告诉你有n个结点的完全二叉树,计算其高度,上面的两个公式就可以分不同情况来使用了,当然书上只给了这两个公式没有说明这两个公式的区别,我觉得区别就是第一个公式可以应对于会出现空树的情况
最后对于任何一个非空二叉树都会有:叶子结点的个数=度为2的结点的个数+1,对于有n个结点的树则需要n-1条边无论是几叉树
对于这一章内容我觉得知识点的话也就上面这么多,做题的时候需要灵活运用
未解决问题,王道作业题的第3,8,18题,这就体现了我考虑问题的全面性不够