单项选择(2015年秋程序员软考)

最优二叉树(或哈夫曼树)是指权值为w1,w2,…,wn的n个叶结点的二叉树中带权路径长度最小的二叉树。【 】是哈夫曼树(叶结点中的数字为其权值)。

A、

B、

C、

D、

答案解析

A哈夫曼树又称为最优二叉树,是一类带权路径长度最短的树。树的带权路径长度(WPL)为树中所有叶子结点的带权路径长度之和。其中n为带权叶子结点数目,wk为叶子结点的权值,b为根到叶子结点的路径长度选项A所示二叉树的WP...

查看完整答案

讨论

具有n个叶子的二叉树,每个叶子的权值为wi(1≤i≤n),其中带权路径长度最小的二叉树称为__________。

啥夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。

什么是啥夫曼(Huffman)树?

在叶子数目和权值相同的所有二叉树中,最优二叉树一定是完全二叉树,该说法【 】。

如果一棵huffman树T有n0个叶子结点,那么,树T有多少个结点?要求给出求解过程。

求具有最小带权路径长度的二叉树的算法称为__________算法。对于给出的一组权W={10,12,16,21,30},通过该算法示出的二叉树的带权路径长度为__________。

在有 6 个字符组成的字符集 S 中,各个字符出现的频次分别为 3、4、5、6、8、10,为 S 构造的哈夫曼树的加权平均长度为【 】

在有13个元素构成的有序表data[1..13]中,用折半查找(即二分查找,计算时向下取整)方式查找值等于data[8]的元素时,先后与【 】等元素进行了比较。

对于下图,从顶点1进行深度优先遍历时,不可能得到的遍历序列是【 】

函数 Reverselist(LinkList headptr)的功能是将含有头结点的单链表就地逆置。处理思路是将链表中的指针逆转,即将原链表看成由两部分组成,已经完成逆置的部分和未完成逆置的部分,令s指向未逆置部分的第一个结点,并将该结点插入已完成部分的表头(头结点之后),直到全部结点的指针域都修改完成为止。例如,某单链表如图所示,逆置过程中指针s的变化情况如图(a)(b)所示。链表结点类型定义如下:typedef struct Node{ int data, struct Node *next;}Node, *LinkList;void ReverseList (LinkList headptr){//含头结点的单链表就地逆置, headptr为头指针 LinkList p,s; if(__(1)__) return;//空链表(仅有头结点)时无需处理 p=__(2)__;//令p指向第一个元素结点 if (!p->next) return;//链表中仅有一个元素结点时无需处理 s= p->next;//s指向第二个元素结点 __(3)__=NULL;//设置第一个元素结点的指针域为空 while (s){ p=s;//令p指向未处理链表的第一个结点 s=__(4)__; p-> next= headptr-> next;//将p所指结点插入已完成部分的表头 headptr-> next=__(5)__; }}