结点最少的情况为:除根结点层只有一个结点外,其他h-1层均有两个结点,结点总数为2(h-1)+1=2h-1。
由二叉树的性质1可知 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1,结点总数=2n= n 0 + n 1 + n 2 n_0+n_1+n_2 n0+n1+n2= n 1 + 2 n 2 + 1 n_1+2n_2+1 n1+2n2+1,则 n 1 = 2 ( n − n 2 ) − 1 n_1=2(n-n_2)-1 n1=2(n−n2)−1,所以 n 1 n_1 n1为奇数,说明该二叉树中不可能有2m个度为1的结点。
第一层有一个结点,其余h-1层上各有两个结点,节点总数=1+2(h-1)=15,h=8。
高度为h的完全二叉树中,第1层~第h-1层构成一个高度为h-1的满二叉树,为 2 h − 1 − 1 2^{h-1}-1 2h−1−1。第h层至少有一个结点,所以最少的结点个数=( 2 h − 1 − 1 2^{h-1}-1 2h−1−1)+1= 2 h − 1 2^{h-1} 2h−1。
在非空的二叉树当中,由度为0和2的结点数的关系 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1可知 n 2 n_2 n2=123;总结点数n= n 0 + n 1 + n 2 = 247 + n 1 n_0+n_1+n_2=247+n_1 n0+n1+n2=247+n1,其最大值为248( n 1 n_1 n1的取值为1或0,当 n 1 = 1 n_1=1 n1=1时结点最多)。注意,由完全二叉树总结点数的奇偶性可以确定 n 1 n_1 n1的值,但不能根据 n 0 n_0 n0来确定 n 1 n_1 n1的值。
采用特殊值法求解。二叉树中仅有前115个叶结点有右孩子结点,其余1896个结点均无右孩子结点。
第6层有叶结点,完全二叉树的高度可能为6或7,显然树高为7时结点最多。完全二叉树与满二叉树相比,只是在最下一层的右边缺少了部分叶结点,而最后一层之上是个满二叉树,并且只有最后两层上有叶结点。若第6层上有8个叶结点,则前6层为满二叉树,而第7层缺失了8*2=16个叶结点,故完全二叉树的结点个数最多为 2 7 − 1 − 16 = 111 2^7-1-16=111 27−1−16=111。
二叉树采用顺序存储时,用数组下标来表示结点之间的父子关系。对于一棵高度为5的二叉树,为了满足任意性,其1~5层的所有结点都要被存储起来,即考虑为一棵高度为5的满二叉树,共需要存储单元的数量为1+2+4+8+16=31。
二叉树中序遍历的最后一个结点一定是从根开始沿右子女指针走到底的结点,设用p指示。若结点p不是叶子结点(其左子树非空),则前序遍历的最后一个结点在它的左子树中,A、B错;若结点p是叶子结点,则前序与中序遍历的最后一个结点就是它,C正确。若中序遍历的最后一个结点p不是叶子结点,它还有一个左子女q,结点q是叶子结点,那么结点q是前序遍历的最后一个结点,但不是中序遍历的最后一个结点,D错。
后序遍历的顺序是LRN,若n在N的左子树,m在N的右子树,则在后序遍历的过程中n在m之前访问;**若n是m的子孙,设m在N的位置,则n无论是在m的左子树还是在右子树,在后序遍历的过程中n都在m之前访问,其他都不可以。**C要成立,要加上两个结点位于同一层。
