求助 数据结构哈夫曼树及其几个应用题!!!

1. 设A.B.C.D.E.F六个字母出现的的概率为{7,19,2,6,32,3}试写出为这六个字母设计的huffman编码并画出对应的hufffman树。

2.已知一组元素的排序码为
{23,99,16,55,14,26,40}
采用堆排序由大到小排序,请图示并说明排序过程。

3.图示是一个无向带权图,请用prim算法求最小生成树,要求图示并说明过程。
一楼太看得起这些题目了,其实没有你想像的那么难的(其实我不咋会)。。。。
....求最佳答案。。。求最佳答案。、、、、

1,若左子树用二进制编码的0,右子树用1表示,则:

   A:101

   B:11

   C:10000

   D:1001

   E:0

   F:10001

提示:哈弗曼编码是非等长编码,是为了减少编码的重复。先选两个出现概率最小的字母作为叶子节点,以它们的关键字相加的和为关键字生成一个新节点,把新节点加入原来的集合再选择出现概率最小的两个节点(用过的节点消去)生成新的节点,以此类推,知道所有节点都用过。

2,采用由大到小的堆排序,那么首先选择一个最大的作为树的根的点,然后选择次大的数作为左(或右)子树的根节点,以此类推。

3,这道题有点麻烦,我只能给你点思路,算法什么百度百科中有(算法和原理)http://baike.baidu.com/view/288214.htm

提示:1,权代表某一实体的某种属性,堆图而言,多指它的两个节点之间的边数,如途中a,b两顶点见就有6条边。

      2,最小生成树是指:用最少的边把所有顶点都包含,并构成一颗树(多用二叉树)。(一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图联通的最少的边。) 

      3,当然此题还涉及图论种的连通、可达、有向图、无向图等知识,我便不再多说。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-17
1 69
/ \
32 37
/ \
19 18
/ \
7 11
/ \
5 6
/ \
2 3

哈弗曼编码就是32 : 1
19 : 01
7:001
6:0000
2::00011
3:00010

2.此为大堆法~~
初始化:
23
/ \ 从非叶子节点的最左边看~(同一层)
99 16-------------------------------------
/ \ / \ 99比子节点大,不用交换,16却小,跟最大的交换
55 14 26 40

----- 23
/ \
99 40
/ \ / \
55 14 26 16
--------------------------------继续对比~~23与99 40 小~99与23互换,换以后23比55小~~~继续换~~~

======= 99
/ \
55 40
/ \ / \
23 14 26 16
----------------------第一趟完成~~~~
---此时写出 99 55 40 23 26 16
交换第一个与最后一个~~~~
-------16 55 40 23 26 99
除最后一个外 堆排序~~~。并输出 99

------- 16 55
/ \ 对比55合适,40合适,调整16 / \
55 40---------------------------- 23 40
/ \ / 16与55换 并与23换~~ / \ /
23 14 26 16 14 26
-------------------55 23 40 16 14 26
交换第一个与最后一个~~~----26 23 40 16 14 55
------
除最后一个排序 并输出 55

26 40
/ \ / \
23 40 -----只需交换40 26 23 26
/ \ / \
16 14 16 14
-------------------------------------------------------
40 23 26 16 14 交换 14 23 26 16 40 输出 40

14 26
/ \ / \
23 26---------------- 23 14
/ /
16 16

26 23 14 16
交换~~~~16 23 14 26 输出 26

------ 16 23
/ \--------------------- / \
23 14 16 14

23 16 14 交换~~~ 16 14 23 输出23

16
/
14
交换 14 16 输出16
14 输出14

所以最终全部输出~~~~99 55 40 26 23 16 14

累死了~~~~~~~~~~第三个木有图~不做了~~~本回答被提问者采纳
第2个回答  2010-10-19
1,先照出现的的概率从大到小排序 而后建树
注意以下几点 为二叉树
左儿子0 右儿子1
只有叶节点是对应的字母

2.堆排先是1..n建堆,而后取出第一个数和最后的数交换,调整堆,直到只有一个数字在堆中

3.找到源点,不断找这样的边:最小,且一个顶点已纳入集合,另一个定点没有纳入,找到后把没纳入集合的那个点纳入,再从它开始扩展,知道所有的点都纳入就行了
第3个回答  2010-10-16
楼上的 这种题学过数据结构的人一看就知道怎么做了
别把这种题说的太虚了
唉 收不鸟了
第4个回答  2010-10-20
1
相似回答