设T是Huffman树,具有5个叶结点,树T的高度最高可以是()。
A、3
B、4
C、5
D、6
A、3
B、4
C、5
D、6
A.字符均在叶子结点上
B.最低频度的两个字符处于树的最底层,且互为兄弟
C.Huffman树是满树
D.在树的同一层,字符的出现顺序会影响平均编码长度的数学期望
根据文字说明,请在以下______处填充适当的语句。
采用静态链表作存储结构,设置一个大小为2n-1的数组,令数组的每个元素由四个域组成:wt是结点的权值;lehild、rchild分别为结点的左、右孩子指针;parent是结点的双亲在数组中的下标。其数组元素类型定义如下:
typedef struet
{ float wt; /*权值*/
int parent,lchild rchild; /*指针域*/
}node;
typedef node hftree[2*n-1];
在这种存储结构上的哈夫曼算法可描述如下:
void huffman(int k,float W[k],hftree T) /*求给定权值W的哈夫曼树T*/
{ int i,j,x,y;
float m,n;
for(i=0;i<2*k-1;i++)
{ T[i].parent=-1;T[i].lchild=-1;T[i].rchild=-1;
if(______)T[i].wt=W[i];
else T[i].wt=0
}
for(i=0;i<k-1;i++)
{ x=0;y=0;m=maxint;n=maxint;
for(j=0;j<k-i,j++)
if(T[j].wt<m)&&(T[j].parent==-1){n=m;y=___;m=___;x=j;}
else if(T[j].wt<n)&&(T[j].parent==-1)){n=T[j].wt;y=j;)
}
T[x].parent=______;T[y].parent=______;
T[k+i].wt=______;
T[k+i].lchild=______;T[k+i].rchild=______;
}
试扩充深度优先搜索算法,在遍历图的过程中建立生成森林的子女-兄弟链表。算法的首部为其中,指针t指向生成森林上具有图顶点v信息的根结点。(提示:在继续按深度方向从根v的某一未访问过的邻接顶点w向下遍历之前,建立子女结点。但需要判断是作为根的第一个子女还是作为其子女的右兄弟链入生成树)
A、2h-1-1
B、2b-1
C、2h-1+1
D、2b-1
此题为判断题(对,错)。
A、n1-1
B、n1+n2+n3
C、n2+n3+n4
D、n1