1、设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有()个空指针域。
哈夫曼树不存在入度为1 的结点,所以n0=n2+1
设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有(2m)个空指针域; n0=m
树的二叉链表存储结构就是孩子-兄弟表示法。
孩子-兄弟表示法:数据域是结点,如A; 有两个指针域:1)指向长子 2)指向右兄弟
哈夫曼树的孩子-兄弟表示法的空指针域有三种情况:(1)叶子结点长子域一定为空m个(2)根节点的右兄弟域一定为空 1个 (3)除去根节点外,哈夫曼树的其余结点个数中有一半结点的右兄弟域为空 (n总-1)/2=n2
所以空指针域=m+1+n2=2m
哈夫曼树权值结点的父结点实际上是没有值的
2、设顺序循环队列Q[0: M-1]的头指针和尾指针分别为F和R.头指针F总是指向队头元素的前一位置.尾指针R总是指向队尾元素的当前位置.则该循环队列中的元素个数为:(R-F+M)%M

书中定义的队列长度为:(rear-front++QueueSize)%QueueSize
1.rear: 定义中是指向末尾元素的下一个位置, 本题中是直接指向末尾元素, 所以将rear向后移动一个位置, R-1
2.front:定义中是指向首元素, 而本题中是指向首元素的前一个元素, 因此向后移动一个位置, F-1
rear = R-1 front = F-1 所以: [ (R - 1) - ( F - 1) + M]%M = (R-F+M)%M
注意是循环队列,头可能在尾的后面,所以要+M%M
3、设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过(log2(n)+1)
因为二分查找每次排除掉一半的不适合值,所以对于n个元素的情况:一次二分剩下:n/2,两次二分剩下:n/2/2 = n/4,m次二分剩下:n/(2^m),在最坏情况下是在排除到只剩下最后一个值之后得到结果,所以为,n/(2^m)=1;2^m=n;
此时时间复杂度为log2(n),再与最后一个元素比较复杂度+1,所以时间复杂度为:log2(n)+1
4、设一棵m