问答题 给定权W1,W2,…,Wm。说明怎样来构造一个具有最小的加权路径长度的k叉树。试对于权1,4,9,16,25,36,49,64,8l,100来构造最优的三叉树,并给出其最小加权路径长度。【北方交通大学1994四(12分)】
【正确答案】正确答案:首先确定是否需加“虚权值”(即权值为0),对m个权值,建尼叉树,若(m—1)%(k-1)=0,则不需要加“虚权值”,否则,第一次归并时需(m一1)%(k-1)+1个权值归并。建立k叉树的过程如下: (1)将m个权值看作m棵只有根结点的k叉树的集合F={T1,T2,…,Tm}。 (2)从F中选k(若需加虚权值,则第一次选(m一1)%(k-1)+1)个权值最小的树作子树,构成一棵k叉树,k叉树根结点的权值为所选的后个树根结点权值之和,在F中删除这k棵子树,并将新k叉树加入F中。 (3)重复(2),直到F中只有一棵树为止,这就是最优的k叉树。对本题10个权值,构造最优三叉树。因(10—1)%(3—1)=1,所以第一次用2个权值合并。最小加权路径长度:
【答案解析】