哈夫曼树编码一定是左边为0,右边为1吗?

lun1482022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
青亲 共回答了15个问题 | 采纳率93.3%
注:0和1表示左子树还是右子树没有明确规定.因此左右节点的顺序是任意的,所以构造出的哈夫曼树并不唯一,但是各个哈夫曼树的带权路径长度相同且为最优.
1年前

相关推荐

数据结构,设 T是哈夫曼树,具有5个叶子结点,树T的高度最高可以多少
数据结构,设 T是哈夫曼树,具有5个叶子结点,树T的高度最高可以多少
可是我觉得应该是4啊.除了根,其他结点都应该有兄弟才对啊
4,可是我觉得应该是3
gdszlisir1年前1
sdw47125465 共回答了21个问题 | 采纳率81%
画出一个二叉树,可如下:
o
/
O o
/
O o
/
O o
/
O O
这不是很明显的事吗?如果根的高度从0开始计,则该树树高为4,如果根的高度从1开始计,则该树高度为5.再怎么也不会是3啊.
以下说法错误的是( ).一般在哈夫曼树中,权值越大的叶子离根结点越近b哈夫曼树中没有度数为1的分支结点c若初始森林中共有
以下说法错误的是( ).
一般在哈夫曼树中,权值越大的叶子离根结点越近
b哈夫曼树中没有度数为1的分支结点
c若初始森林中共有n棵二叉树,最终求得的哈夫曼树中共有2n-1个结点
d若初始森林中共有n棵二叉树,进行2n-1次合并后才能剩下一颗最终的哈夫曼树
走过v路过1年前1
gccglt 共回答了18个问题 | 采纳率77.8%
d
数据结构中的一道题若一棵哈夫曼树共有9个顶点,则其叶子结点的个数为__(7)__.(7)A.4 B.5 C.6 D.7
68341701年前1
duguwhao 共回答了24个问题 | 采纳率91.7%
哈夫曼树是没有度数为1的分支结点的二叉树.
哈夫曼树一般情况下共有2n-1个结点
2n-1=9
n=5
选B
用整数 1,2,3,4,5作为5个树叶的权值,构造出的哈夫曼树的带权路径长度WPL
zhuaq1年前1
emarrk 共回答了15个问题 | 采纳率93.3%
首先1与2结合生出3节点,再选剩下的3与刚生成的3结合生出6节点,剩下的4,5都小于6,所以4,5结合生出9节点,最后9和6结合为根节点.
1的路径000
2的路径001
3的路径01
4的路径10
5的路径11
数据结构题目问:给定N个权值,则构造的哈夫曼树中的结点总数为多少个,并附上相关的知识点,
爱上颜如玉1年前1
jason01huang 共回答了21个问题 | 采纳率95.2%
算上N个叶子的话一共2N-1个.参见定理:0度结点(即叶子)数比2度结点数多1.另外Huffman树中没有1度结点.
哈夫曼树的定义是:带权路径长度最小的二叉树.我先请问:为何它是带全路径长度最小的二叉树?最小是
哈夫曼树的定义是:带权路径长度最小的二叉树.我先请问:为何它是带全路径长度最小的二叉树?最小是
哈夫曼树的定义是:带权路径长度最小的二叉树.
我先请问:为何它是带全路径长度最小的二叉树?最小是因为数学的那个算法可以证明?
binbinbangg1年前1
胭雨 共回答了17个问题 | 采纳率100%
只有带权路径长度最小的二叉树,才是哈夫曼树.当然是可以证明带权路径长度最小
1用递归实现二叉树的先序、中序、后序三种遍历。2哈夫曼树问题
1用递归实现二叉树的先序、中序、后序三种遍历。2哈夫曼树问题
1通过调试为下面的二叉树建立二叉链表,并用递归实现二叉树的先序、中序、后序三种遍历。
2[基本要求]:
A:从终端读入字符集大小为n,及n个字符和n个权值,建立哈夫曼树,进行编码并且输出。并将它存于文件hfmtree中。
B:利用已建好的哈夫曼编码文件hfmtree,对键盘输入的正文进行译码。输出字符正文,再输出该文的二进制码。
[测试数据] 用下表中给出的字符集和频度的实际统计数据建立哈夫曼树:
字符 A B C D E F G H I J K L M N
频度 64 13 22 32 103 21 15 47 57 1 5 32 20 57
字符 O P Q R S T U V W X Y Z 空格
频度 63 15 1 48 51 80 23 8 18 1 16 1 168
并实现以下报文的译码和输出:“THIS PROGRAM IS MY FAVORITE”。

还有真爱么1年前1
风之捷 共回答了16个问题 | 采纳率87.5%
//在吗? 我给你。另外我有自己的实验报告。
//里面有递归遍历,有迭代遍历。可以写文件,可以压缩编码。可以读文件。
//你不需要什么功能的话就删去相应的函数就行了。
//希望加分。
#include
#include
#include
#include
using namespace std;
const int maxlen = 10000; //结点最大数目
const int maxlen2 = 260; //字符最大数目,叶节点最大数目
const int maxchar = 260; //字符最大数目
#define INTMAX 10000000; //大数,大于任意一个权值
struct CharSet //程序初始化时保存字符和结点的结构体。
{
char ch;
int weight;
};
struct HaffNode //哈夫曼树结点结构
{
int weight,parent,lchild,rchild;
char ch;
HaffNode() {weight=0; parent=lchild=rchild=-1; ch='n';}
};
struct HaffCode //哈夫曼树字符编码信息结构
{
unsigned int bit; //通过位运算,用一个无符号整形来表示一串二进制编码。
int startb; //记录偏移量。
int weight;
char ch;
HaffCode() { bit=0; startb = -1; weight=0; ch='n';}
HaffCode& operator=(HaffCode & obj) //重载赋值符号
{
bit=obj.bit; startb=obj.startb;
ch=obj.ch; weight=obj.weight;
return *this;
}
};
class HaffmanSystem
{
private:
CharSet cs[maxlen/2]; //保存初始化时的字符和权值信息。
HaffNode hn[maxlen]; //保存哈夫曼树结点信息。
HaffCode hc[maxlen/2]; //保存哈夫曼树字符编码信息。
HaffCode hc2[maxchar]; //索引散列。考虑到字符数少,以字符的十进制数作为下标保存和索引字符编码信息,时间为O(1);
int head; //根结点的数组下标。
int n;
int leafnum; //叶节点个数,字符个数。
public:
HaffmanSystem() {n=head=leafnum=0;}
void Haffman(); //哈夫曼树生成函数。
void InitisLization(); //初始化,调用Haffman();
void Encoding(); //对文件"ToBeTran"进行编码。
void Decoding(); //对文件"CodeFile"译码。
void Print(); //印代码至屏幕。
static void TreePrinting(int pos,int i,int child_flag,HaffmanSystem * p,ofstream & fop);
void TreePrinting(); //输出哈夫曼树图形到屏幕和文件,其中要调用静态实例函数完成递归功能。
void TreeFromFile(); //从文件中获取哈夫曼树。
};
void HaffmanSystem::InitisLization()
{
cout
数据结构与算法:以数据集{4,5,6,7,10,12,18}为结点权值所构造的哈夫曼树,其带权路径长度为?
东洋浪人1年前0
共回答了个问题 | 采纳率
权值w={7,6,9,3,2,13,4,12},画出哈夫曼树,并计算其带权路径长度
权值w={7,6,9,3,2,13,4,12},画出哈夫曼树,并计算其带权路径长度
RT
吹水的孩子1年前0
共回答了个问题 | 采纳率
有七个带权节点,其权值分别是3 7 8 2 6 10 14,以他们的叶子为结点构造哈夫曼树,计算带权路径长度
马1200001年前1
abvchr 共回答了16个问题 | 采纳率87.5%
50
21 29
11 10 15 14
5 6 7 8
2 3
上图为树,
所以带权路径长度为 2x4+3x4+6x3+10x2+7x3+8x3+14x2=131
给定权值(7,18,3,32,5,26,12,8),构造相应的哈夫曼树
给定权值(7,18,3,32,5,26,12,8),构造相应的哈夫曼树
如题,麻烦写出过程,谢谢!
原题我看过,不过不够细,可否细一些
skyloveangel1年前1
hyundai007 共回答了22个问题 | 采纳率72.7%
这还不够细?
3+5=8,此时序列为8 7 8 12 18 26 32
7+8=15,此时序列为15 8 12 18 26 32
8+12=20,此时序列为15 20 18 26 32
……每一步都挑最小的两个相加.
图见下面.
多看书,baidu上不好画图,打这些东西很累.
------------------
原答题者:plause
按权值大小排列后 3 5 7 8 12 18 26 32
只要按照将最小的两个合并, 合并后的值再入列中(最小的两个出列), 至到列中只有一个值.
按上面要求构造哈夫曼树如下:
/////树列完后, 可取左树编码 为0, 右为 1, (左为 1, 右为 0 亦可)
[3]`````[5]`````````[7]``````[8]
```````/```````````````````/
`0````/`1```````````0`````/`1
`````/```````````````````/
````(8)`````[12]````````(15)`````[18]
````````````/```````````````````/
`````0`````/`1```````````0`````/`1
``````````/```````````````````/
````````(20)``````[26]```````(33)``````[32]
`````````````````/```````````````````/
``````````0`````/`1```````````0`````/`1
```````````````/```````````````````/
`````````````(46)`````````````````(65)
`````````````````````````````````/
```````````````0````````````````/`1
```````````````````````````````/
```````````````````````(111)
则按上面的树可得到各权值所对应的编码:
//// 其编码是从树顶到该权值点所经过的 1 或 0 的序列
[`7]:``1`0`0`0
[18]:``1`0`1
[`3]:``0`0`0`0
[32]:``1`1
[`5]:``0`0`0`1
[26]:``0`1
[12]:``0`0`1
[`8]:``1`0`0`1
设定权值的总数为N个,其哈夫曼树的结点总数是2n-1,不懂为什么?我想知道具体解法
100501年前1
凉心813 共回答了13个问题 | 采纳率92.3%
第1次必定是2个叶子组成二叉树,产生1新结点,接下来有2种情况:
1.此新结点与原剩下的叶子再组成二叉树又产生1新结点,这样就只有第1次时由2个叶子产生1新结点,以后每次由1叶子与新结点产生新结点,故n个叶子共有2n-1个结点.
2.剩下的叶子中又有2个叶子(比第1次产生的新结点权小)结合产生新结点,其它类似,那么必然会由2个都是新结点再产生新结点,所以实际上数量与第1种一样,共有2n-1个.
建哈夫曼树及编码,例如:已知某系统在通讯网络中只可能出现8种字符(A、B、C、D、E、F、G、H),其频率分别为0.05
建哈夫曼树及编码,例如:
已知某系统在通讯网络中只可能出现8种字符(A、B、C、D、E、F、G、H),其频率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,生成哈夫曼树并为各个字符设计哈夫曼编码.
葫芦瓜1年前1
80005503 共回答了16个问题 | 采纳率93.8%
步骤:
一、对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F= {T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空.(为方便在计算机上实现算 法,一般还要求以Ti的权值Wi的升序排列.)
二、在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和.
三、从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中.
四、重复二和三两步,直到集合F中只有一棵二叉树为止.
简易的理解就是,假如我有A,B,C,D,E五个字符,出现的频率(即权值)分别为5,4,3,2,1,那么我们第一步先取两个最小权值作为左右子树构造一个新树,即取1,2构成新树,其结点为1+2=3!
请问这个哈夫曼树该怎么构造?权集W={3,15,17,14,6,16,9,2}8244 3827 17 23 15 16
请问这个哈夫曼树该怎么构造?
权集W={3,15,17,14,6,16,9,2}
82
44 38
27 17 23 15
16 11 9 14
5 6
2 3
请问我这样构造对吗?(晕,82在44和38中间~)
lamthun1年前1
bobo最光荣 共回答了18个问题 | 采纳率83.3%

将8个权值赋给8个字符,这是程序运行后的哈夫曼树:

数据结构-构造哈夫曼树一、填空题: 1、深度为k的完全二叉树至少有 个结点。 2、树中结点的最大层次称为树的 。 3、由
数据结构-构造哈夫曼树
一、填空题:
1、深度为k的完全二叉树至少有 个结点。
2、树中结点的最大层次称为树的 。
3、由一棵二叉树的前序序列和 序列可以唯一确定这棵二叉树。
4、一棵含有n个结点的完全二叉树,它的高度是 。
5、二叉树的存储结构有顺序存储和 。
6、哈夫曼树是带权路径长度 的二叉树。
7、n个顶点的连通图至少有 条边。
8、具有4个顶点的无向完全图有 条边。
9、图的深度优先遍历序列 唯一。
10、一个图的生成树的顶点是图的 顶点。
二、单项选择题:
1、具有35个结点的完全二叉树的深度为( )。
(A)5 (B)6 (C)7 (D)8
2、树最适合用来表示( )。
(A)有序数据元素 (B)无序数据元素
(C)元素之间无联系的数据 (D)元素之间有分支层次的关系
3、线索二叉树是一种( )结构。
(A)物理 (B)逻辑 (C)逻辑与存储 (D)线性
4、一棵n个结点的二叉树,其空指针域的个数为( )。
(A)n (B)n+1 (C)n-1 (D)不确定
5、如果某二叉树的前序为STUWV,中序为UWTVS,那么二叉树的后序序列为( )。
(A)UWVTS (B)VWUTS (C)WUVTS (D)WUTSV
6、图的深度优先遍历类似于二叉树的( )。
(A)先序遍历 (B)中序遍历 (C)后序遍历 (D)层次遍历
7、任何一个无向连通图的最小生成树( )。
(A)只有一棵 (B)一棵或多棵 (C)一定有多棵
(D)可能不存在
8、生成树的构造方法只有( )。
(A)深度优先 (B)深度优先与广度优先
(C)无前趋的顶点优先 (D)无后继的顶点优先
9、无向图顶点V的度是关联于该顶点( )的数目。
(A)顶点 (B)边 (C)序号 (D)下标
10、在一个图中,所有顶点的度数之和等于图的边数的( )倍。
(A)0.5 (B)1 (C)2 (D)4
三、是非题:
1、 满二叉树一定是完全二叉树。()
2、 由树转换成二叉树,其根结点的右子树一定为空的。()
3、 用一维数组来存储二叉树时,总是以前序遍历存储结点。()
4、 二叉树按某种顺序线索后,任一结点均有指向其前驱和后继的线索。()
5、 树属于非线性结构。()
6、 图可以没有边,但不能没有顶点。()
7、 有向图的边一定是有两个方向的。()
8、 有向图不能进行广度优先遍历。()
9、 带权图最小生成树是唯一的。()
10、 图按某种方法可以转变成树。()
四、综合题:
给定权值{ 2,4,6,7,8,9},构造一棵哈夫曼树,并求出其带权路径长度。
rr巨大1年前2
haojuan 共回答了20个问题 | 采纳率95%
填空题
1.2的k-1次幂
2.根
3.中续
4.(log2n)+1
5.链式存储
6.最小
7.n-1
8.5
9.每个顶点的访问次数
10.任意
单选
1.B
2.D
3.C
4.B
5.A
6.A
7.B
8.B
9.B
10...
以集合34568101218为叶子结点构造哈夫曼树,并计算其带权路径长度
lzguy1年前1
shixianlin0 共回答了19个问题 | 采纳率94.7%
选出权值最小的两个相加得到新的结点,将原来的两个去掉,将新的结点放入w中依此类催
有一份电文共使用6个字符a,b,c,d,e,f,他们出现频率一次为2,3,4,7,8,9,构造哈夫曼树,求WPL
olina_andy1年前1
短发新兵 共回答了18个问题 | 采纳率83.3%
33
18 15
9 9 7 8
4 5
2 3
WPL=2*7+2*8+2*9+3*4+3*2+3*3=75
有ABCDEF六个数据项,频度为6、5、4、3、2、1,构造哈夫曼树,确定哈夫曼编码.
有ABCDEF六个数据项,频度为6、5、4、3、2、1,构造哈夫曼树,确定哈夫曼编码.
21 21
9 12 9 12
4 5 6 6 5 4 6 6
3 3 3 3
1 2 1 2
以左边分支为0,右边分支为1
请问这两种哈夫曼树的 哈夫曼编码是不是一样,有什么不同.
题目要求的是哪种,为什么?
我想说明下,我想知道的是为什么是左边的那种?
要是考试的时候,我画的是右边的这种,为什么
春日花草香1年前6
昵称必须是唯一 共回答了20个问题 | 采纳率90%
不一样,上机实验的时候基本得出的都是左边的
建议你多看看书,多做做实验,实验中很快就能明白.
数据结构 赫夫曼 简单的选择题设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为
数据结构 赫夫曼 简单的选择题
设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为( ).
(A) 20(B) 30(C) 40(D) 45
需要 有图解 过程具体一点
tjjianzhu1年前1
dddd 共回答了17个问题 | 采纳率94.1%
带权路径=6*2+5*2+4*2+3*3+2*3=45
有一份电文中共使用5个字符:a、b、c、d、e.它们出现的频率依次为4、7、5、2、9,生成对应的哈夫曼树(按照左子树根
有一份电文中共使用5个字符:a、b、c、d、e.它们出现的频率依次为4、7、5、2、9,生成对应的哈夫曼树(按照左子树根结点的权小于等于右子树根结点的权的次序构造),并给出每个字符的哈夫曼编码.
lxp_cadi1年前1
cjj1666 共回答了17个问题 | 采纳率82.4%
编译哈夫曼树的广义表表示为27(11(5c,6(2d,4a)),16(7b,9e)),5种字符a、b、c、d、e的哈夫曼编码依次为011、10、00、010、11
给定权值 {19,01,23,14,55,20,84,27 },构造相应的哈夫曼树,计算WPL.
lanermm1年前1
funahn 共回答了21个问题 | 采纳率90.5%
243
/
145 98
/ /
61 84 43 55
/ /
34 27 20 23
/
15 19
/
1 14
WPL=(84+55)*2+(27+20+23)*3+19*4+(1+14)*5=639
有n个权值,建立哈夫曼树后,哈夫曼树的结点最多有多少个
有n个权值,建立哈夫曼树后,哈夫曼树的结点最多有多少个
有n个值,要建立哈夫曼树.哈夫曼树最多有多少个结点?考虑最差的情况.是不是 2n-1
杨嘉儿1年前1
scott_lin 共回答了25个问题 | 采纳率84%
最小的两个值合起来还是最小的情况,生成的结点最多. 每次合成,生成一个结点,即共有n-1+n=2n-1个.
给定一组权值W=(14.15.7.3.20.4)请构造出相应的哈夫曼树,并计算其带权的路径长度WPL?
林上云1年前1
己的aaaa 共回答了21个问题 | 采纳率85.7%
带权的路径长度WPL=3*4+4*4+7*3+14*2+15*2+20*2
2.设给定一个权值集合W=(3,5,7,9,11),要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫曼树的带权路径长度W
2.设给定一个权值集合W=(3,5,7,9,11),要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫曼树的带权路径长度WPL.
4.设一组初始记录关键字集合为(25,10,8,27,32,68),散列表的长度为8,散列函数H(k)=k mod 7,要求分别用线性探测和链地址法作为解决冲突的方法设计哈希表.
momokojgy1年前1
girlsummer1 共回答了26个问题 | 采纳率96.2%
设给定一个权值集合W=(3,5,7,9,11),要求根据给定的权值集合构造一棵哈夫曼树
夫曼树的构造:
(1)根据给定的n个权值{w1,w2,...,wn}构造n棵二叉树的集合F={T1,T2,...,Tn},其中Ti中只有一个权值为wi的根结点,左右子树为空;
(2)在F中选取两棵根结点的权值为最小的数作为左、右子树以构造一棵新的二叉树,且置新的二叉树的根结点的权值为左、右子树上根结点的权值之和.
(3)将新的二叉树加入到F中,删除原两棵根结点权值最小的树;
(4)重复(2)和(3)直到F中只含一棵树为止,这棵树就是哈夫曼树.
哈夫曼.bmp (134.99 KB)
2008-8-5 17:55
以上图片是过程
最后的树是这样:
35
20 15
9 11 7 8
3 5
wpl=3*3 5*3 7*2 9*2 11*2=78
本文来自:冠威计算机网(
构造哈夫曼树:以数据集(3,4,5,8,11,18,20,30)为结点,构造一棵哈夫曼数,并求其带权路径长度.
waterwall1年前1
hy1zwl 共回答了17个问题 | 采纳率76.5%
构建哈夫曼树的步骤:
1,选取结点(node)中最小的两个,相加,构成一个新结点
2,重复第一步,直至所有结点都在同一个树型里面.
所以,大概构成后就是这样
.81
.0/ 1
./
.31 50
.0/ 1 0/1
./ /
.18 13 20 30
.0/ 1 0/ 1
./ /
.7 11 5 8
.0/ 1
./
.3 4
从最下面向上读,node3和node4是初始数据里面最小的两个,
它们组成一个新结点7,
然后再重复相同的步骤,在新数据里面,7和11是最小,他们组成18,
原始数据里面的18可以消去.
重复步骤直至所有结点在同一个树型里面
现在看看
3的哈夫曼编码就是0000,而数字最大的30编码就是11
【数据结构】 由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( B )
【数据结构】 由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( B )
A 24 B 71 C 48 D 53
我是树苗1年前1
enjoy35 共回答了24个问题 | 采纳率100%
哈夫曼树的形状如下:
24
/
11 13
/
6 7
/
2 5
带权路径长度=(2+5)*3+6*2+11*1=44
设给定一个权值集合W=(9,4,10,6,3,10,8,15,12,16,2,11),构造一个哈夫曼树
设给定一个权值集合W=(9,4,10,6,3,10,8,15,12,16,2,11),构造一个哈夫曼树
并计算哈夫曼树的带权路径长度WPL
gxbbmake1年前1
陌路心情 共回答了18个问题 | 采纳率88.9%
哈夫曼树如下:
106
/
63 43
/ /
29 34 20 23
/ / / /
14 15 16 18 10 10 11 12
/ /
6 8 9 9
/
4 5
/
2 3
WPL=361
哈夫曼树问题
骑猪追宝马1年前1
pattyjin 共回答了21个问题 | 采纳率90.5%
给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree).
求哈夫曼树的带权路径长度 算法
laishuangfa1年前1
AYLN 共回答了21个问题 | 采纳率85.7%
1, T->lchild == NULL && T->rchild == NULL //叶节点
2, n + T->weight * h //加上当前叶节点的带权路径长度
3, WPL(T->lchild, h+1) //遍历左子树
4, WPL(T->rchild, h+1) //遍历右子树
数据结构(Java)在线作业1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树共有( )个结点。A. n+1B. 2n-1
数据结构(java)在线作业
1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树共有( )个结点。
a. n+1
b. 2n-1
c. 2n
d. 2n+1
2. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址 。
a. 必须是连续的
b. 部***址必须是连续的
c. 一定是不连续的
d. 连续不连续都可以
3. 在一个无权图中,若两顶点之间的路径长度为k,则该路径上的顶点数为 。
a. k
b. k+1
c. k+2
d. 2k
4. 利用3,6,8,12,5,7这六个值作为叶子结点的权,生成一棵哈夫曼树,该树的深度为
a. 3
b. 4
c. 5
d. 6
5. 在面向对象程序设计中,一个对象( )。
a. 是一个类
b. 可能包含有数据和方法
c. 是一个程序
d. 可能含有类
6. 设有串s1=“i like english”和s2=“like”,那么s2在s1中的索引位置值是( )。
a. 1
b. 2
c. 3
d. 5
判断题(共 14 道试题,共 70 分。)v 1. 算法可以用自然语言,高级语言,类语言和流程图4种方法进行描述。
a. 错误
b. 正确
满分:5 分
2. object是java语言中所有类的父类。
a. 错误
b. 正确
满分:5 分
3. 线性表的存储结构可分为顺序存储结构和链式存储结构两种。
a. 错误
b. 正确
满分:5 分
4. 面向对象程序设计的三大基本特征是:封装,继承和多态。
a. 错误
b. 正确
满分:5 分
5. 有向完全图的边数是无向完全图的2倍。
a. 错误
b. 正确
满分:5 分
6. 消息是对象之间进行通信的结构。
a. 错误
b. 正确
满分:5 分
7. 队列的特点是先进先出。
a. 错误
b. 正确
满分:5 分
8. java语言中的循环语句包括for循环,while循环和do-while循环。
a. 错误
b. 正确
满分:5 分
9. 若在图g中,任意两个不同的节点都连通,则称g为连通图。
a. 错误
b. 正确
满分:5 分
10. 广义表的深度是指表中所含括号的层数。
a. 错误
b. 正确
满分:5 分
11. 多态性是指不同的对象收到相同的消息时会产生多种不同的行为方式。
a. 错误
b. 正确
满分:5 分
12. java语言的数据类型包括8种基本数据类型和3种引用数据类型。
a. 错误
b. 正确
满分:5 分
13. 出栈和进栈的操作全部是针对栈顶元素进行操作的。
a. 错误
b. 正确
满分:5 分
14. 进入队列的一端称为队列的队尾,用rear表示;离开队列的一端称为队列的队头,用front来表示。
a. 错误
b. 正确
creen1年前1
multi_win 共回答了15个问题 | 采纳率100%
B D B B B B
B A B B A
B B B B A
A B B
设某哈夫曼树中有199个结点,则该哈夫曼树中有()个叶子结点.
设某哈夫曼树中有199个结点,则该哈夫曼树中有()个叶子结点.
A、99 B、100 C、101 D、102
答案:B
我想知道这道题怎么做.谢谢.
zhangzhongtx1年前1
OK7329 共回答了17个问题 | 采纳率94.1%
哈夫曼树的叶子结点总比内结点多一个,不信可以试一下,画个图.
哈夫曼树的应用 输入元素 4 分别输入a 4 b 5 c 6 d 10 输出a--->110 b--->111 c---
哈夫曼树的应用 输入元素 4 分别输入a 4 b 5 c 6 d 10 输出a--->110 b--->111 c--->10 d--->0
#include
#include
#include
#define MAXSIZE 30
#define MAX 100
using namespace std;
typedef struct
{
char data;
int weight;
int parent;
int left;
int right;
} HTNode,*HuffmanTree;
typedef char **HuffmanCode;
typedef struct
{
char data;
int weight;
} Tdata;
HuffmanTree HT;
HuffmanCode HC;
void SelectMinTree(HuffmanTree HT,int n,int *s1,int *s2);
void HuffmanCoding(HuffmanTree HT,Tdata *w,int n);
void SelectMinTree(HuffmanTree HT,int n,int *s1,int *s2)
{
int i,min1,min2;
*s2=*s1=0;
min1=min2=MAX;
for(i=1; i<=n; i++)
{
if(HT[i].parent==0)
if(HT[i].weight{
min2=min1;
min1=HT[i].weight;
*s2=*s1;
*s1=i;
}
else if(HT[i].weight{
min2=HT[i].weight;
*s2=i;
}
}
}
void HuffmanCoding(HuffmanTree HT,Tdata *w,int n)
{
int m,s1,s2,start,c,f,i;
HTNode *p;
char *cd;
if(n<=1) return;
m=2*n-1;
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));
for(p=HT+1,i=1; i<=n; i++,p++)
{
p->data=w[i].data;
p->weight=w[i].weight;
p->left=0;
p->right=0;
p->parent=0;
}
for(; i<=m; i++,p++)
{
p->weight=0;
p->left=0;
p->right=0;
p->parent=0;
}
for(i=n+1; i<=m; i++)
{
SelectMinTree(HT,i-1,&s1,&s2);
HT[s1].parent=i,HT[s2].parent=i;
HT[i].left=s1;
HT[i].right=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;
}
HC=(HuffmanCode)malloc((n+1)*sizeof(char*));
cd=(char*)malloc(n*sizeof(char));
cd[n-1]=' ';
for(i=1; i<=n; i++)
{
start=n-1;
for(c=i,f=HT[i].parent; f!=0; c=f,f=HT[f].parent)
if(HT[f].left==c)
cd[--start]='0';
else
cd[--start]='1';
HC[i]=(char*)malloc((n-start)*sizeof(char));
strcpy(HC[i],&cd[start]);
free(cd);
}
}
int main()
{
Tdata w[MAXSIZE];
int n,i;
cout<<" 请输入元素数:<4>";
cin>>n;
for(i=1; i<=n; i++)
{
cout<<" input"<>";
cin>>w[i].data>>w[i].weight;
}
cout<<" "<HuffmanCoding(HT,w,n);
for(i=1; i<=n; i++)
cout<"<}
BigHigh1年前1
distrust736 共回答了23个问题 | 采纳率95.7%
真不容易啊,给你查出问题了.是申请和释放内存出错了.


free(cd);

放在 第二个for循环的外面即可.
#include
#include
#include
#define MAXSIZE 30
#define MAX 100
using namespace std;
typedef struct
{
char data;
int weight;
int parent;
int left;
int right;
} HTNode,*HuffmanTree;
typedef char **HuffmanCode;
typedef struct
{
char data;
int weight;
} Tdata;
HuffmanTree HT;
HuffmanCode HC;
void SelectMinTree(HuffmanTree HT,int n,int *s1,int *s2);
void HuffmanCoding(HuffmanTree HT,Tdata *w,int n);
void SelectMinTree(HuffmanTree HT,int n,int *s1,int *s2)
{
int i,min1,min2;
*s2=*s1=0;
min1=min2=MAX;
for(i=1; iparent=0;
}
for(; iweight=0;
p->left=0;
p->right=0;
p->parent=0;
}
for(i=n+1; i>>>>>>>>>>>>>>>>>
}
int main()
{
Tdata w[MAXSIZE];
int n,i;
cout>n;
for(i=1; i>w[i].data>>w[i].weight;
}
cout
有一组权值(7.5.2.4)对应的哈夫曼树的带权路径长度是多少?
6689091年前1
无常平行线 共回答了16个问题 | 采纳率87.5%

(2+4)*3+5*2+7*1=35

有七个带权结点,其权值分别为3,7,8,2,6,10,14,试以它们为叶结点构造一棵哈夫曼树(请按照每个结点的左子树根结
有七个带权结点,其权值分别为3,7,8,2,6,10,14,试以它们为叶结点构造一棵哈夫曼树(请按照每个结点的左子树根结点的权小于等于右子树根结点的权的次序构造),并计算出带权路径长度WPL及该树的结点总数.
左子树根结点的权小于等于右子树根结点的权
cyapcc1年前1
文夕之火 共回答了22个问题 | 采纳率100%

WPL=(2+3)*4+(6+7+8)*3+(10+14)*2=131
树的结点总数:14
如下图:

有一份电文共使用5个字符a,b,c,d,e,f,他们出现频率一次为4,7,5,2,9,构造哈夫曼树
有一份电文共使用5个字符a,b,c,d,e,f,他们出现频率一次为4,7,5,2,9,构造哈夫曼树
2,求传送电文总长度
3请译出1100011100010101相应电文 急
伴夏婴瞳1年前1
jkwater 共回答了13个问题 | 采纳率84.6%
abcdef是五个字符么?只考虑前五个是ecabc
怎么判断是否是哈夫曼树前缀编码?学习数据结构,没有理解前缀编码的概念,什么是没有前缀?
怎么判断是否是哈夫曼树前缀编码?学习数据结构,没有理解前缀编码的概念,什么是没有前缀?
一道题给了4个选项,问哪个不是前缀编码,怎么判断,(0,1,00,11)说这个不是前缀编码,(00,01,10,11)(0,10,110,111)(000,001,010,101)是前缀编码,
巧克力宝宝1年前1
yzd6620 共回答了21个问题 | 采纳率71.4%
因为第一组,编码“0”是编码“00”的前缀,在译码的时候遇到两个0不知道应该译成“0”+“0”还是“00”,而后面则没有这个问题,没有任何一个编码是另一个编码的前缀
1、二叉树的应用-哈夫曼树(电文的编码和译码)
1、二叉树的应用-哈夫曼树(电文的编码和译码)
哈夫曼编码/译码器
问题描述:设计一个哈夫曼编码/译码系统,对字符串进行编码/译码
基本要求:
(1)从键盘输入字符串,以回车结束;
(2)根据字符串中字符出现的概率进行哈夫曼编码;)
(3)并输出编码结果和编码表;
(4)根据编码结果和编码表还原字符串;
(5)输出编码过程中构造的哈夫曼树。
cwb941910341年前1
心之疙瘩 共回答了22个问题 | 采纳率95.5%
#include
#include
int n;
int m=2*n-1;

struct tree
{
float weight;
int parent;
int lch,rch;
};
struct codetype
{
int bits[100];
int start;
char ch;
};
tree hftree[100];
codetype code[99];
void creathuffmantree(int n,int m)
{

int i,j ,p1,p2;
float s1,s2;
for(i=1;i
设一组权值集合W=(15,3,14,2,6,9,16,17),要求根据这些权值集合构造一棵哈夫曼树.
设一组权值集合W=(15,3,14,2,6,9,16,17),要求根据这些权值集合构造一棵哈夫曼树.
设一组权值集合W=(15,3,14,2,6,9,16,17),要求根据这些权值集合构造一棵哈夫曼树,则这棵哈夫曼树的带权路径长度为( ).
0732gyh1年前1
水佩云裳 共回答了14个问题 | 采纳率85.7%
16*2+17*2+14*3+15*3+9*3+6*4+2*5+3*5=229
数据结构中的一道题由权值为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为__(50)__.供选择的答
数据结构中的一道题
由权值为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为__(50)__.
供选择的答案:
A.23 B.37 C.44 D.46
c_k9111年前1
忘季一隅 共回答了18个问题 | 采纳率88.9%
B
由五个带权值为9,2,3,5,14的叶子结点构成哈夫曼树,带权路径长度为:()
由五个带权值为9,2,3,5,14的叶子结点构成哈夫曼树,带权路径长度为:()
我做的结果是 1*14+2*9+3*5+4*(2+3)=67 对不对

pnben1年前1
zhouqingzheeng 共回答了17个问题 | 采纳率94.1%
对的
用权值2,3,7,8,12构造一棵哈夫曼树,并求其WPL.
一个被骗的人1年前0
共回答了个问题 | 采纳率
设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为多少?
冰岛的星期五1年前1
fangfang1410 共回答了15个问题 | 采纳率80%
WPL = 45,可能会出现生成的Huffman树高度不一样的,但是这个wpl唯一
设哈夫曼树中共有n个结点,则该哈夫曼树中有几个度数为1的结点
有情所累此生1年前1
gzchang99 共回答了17个问题 | 采纳率88.2%
哈夫曼树没有度为1的结点
你仔细想想 如果有度为1的结点 就不可能称之为最优二叉树 也就不是哈夫曼树
画个图试试就明白了
这种数据结构题你会?造一个哈夫曼树 其叶子结点为a,b ,c ,d ,e ,f ,各结点的权重分别为5,10,7,14,
这种数据结构题你会?
造一个哈夫曼树 其叶子结点为a,b ,c ,d ,e ,f ,各结点的权重分别为5,10,7,14,19,30.然后给出a,b,c,d,e,f的哈夫曼编码
jameshy1年前1
娃哈哈ur140 共回答了17个问题 | 采纳率100%
我会.
选择两个最小的5,7叶子节点构成一个二叉树,该二叉树的根节点的权重为5+7=12.
同理认为12是一个叶子节点,选出最小的两个10,12构成一个二叉树,权重为22.
依次类推,直到无叶子节点.
因此,最终的答案是 根节点85,左子树33,右子树52. 33的左子树14(叶子节点d),右子树19(叶子节点e).52的左子树22,右子树30(叶子节点f).22的左子树10(叶子节点b),右子树12.12的左子树5(叶子节点a),右子树7(叶子节点c).
左子树的编码为0 右子树编码为1
a的编码是1010
b的编码是100
c的编码是1011
d的编码是00
e的编码是01
f 的编码是11
急,构造哈夫曼树设用于通讯设备的电文仅有6个字母A.B.C.D.E.F组成,各字母在电文中出现的频率为17.19.10.
急,构造哈夫曼树
设用于通讯设备的电文仅有6个字母A.B.C.D.E.F组成,各字母在电文中出现的频率为17.19.10.6.13.35,构造哈夫曼树,并求其带权路径长度
并且写出各字母的哈夫曼编码
孙芳1年前1
htano865 共回答了16个问题 | 采纳率81.3%
哈夫曼树:
100
/
36 64
/ /
A17 B19 29 F35
/
E13 16
/
D6 C10
带权路径长度:(17+19 + 35)*2 + 13*3 + (6+10)*4 = 245
哈夫曼编码是
A:00 B:01 C:1011 D:1010 E:100 F:11
如果有疑问,可以追问.
对下面给出的数据序列,构造一棵哈夫曼树,并求出其带权路径长度.
对下面给出的数据序列,构造一棵哈夫曼树,并求出其带权路径长度.
4,5,6,7,10,12,15,18,23
假设图采用邻接表存储,编写一个函数利用深度优先搜索方法求出无向图中通过给定点v的简单回路.
若二叉树中各结点的值均不相同,则由二叉树的前序序列和中序序列,或由其后序序列和中序序列均能惟一地确定一棵二叉树,但由前序序列和后序序列却不一定能惟一地确定一棵二叉树.
(1)已知一棵二叉树的前序序列和中序序列分别为ABDGHCEFI和GDHBAECIF,请画出此二叉树.
(2)已知一棵二叉树的中序序列和后序序列分别为BDCEAFHG和DECBHGFA,请画出此二叉树.
(3)已知两棵二叉树的前序序列和后序序列均为AB和BA,请画出这两棵不同的二叉树
沙漠里的烟灰缸1年前1
秋水夕阳 共回答了15个问题 | 采纳率93.3%
答:问题一4,5,6,7,10,12,15,18,23
6,7,9,10,12,15,18,23
9,10,12,13,15,18,23
12,13,15,18,19,23
15,18,19,23,25
19,23,25,33
25,33,42
42,58
100
一道关于二叉树的选择题在下列情况中,可称为二叉树的是() A.每个结点至多有两颗子树的树 B.哈夫曼树 C.每个结点至多
一道关于二叉树的选择题
在下列情况中,可称为二叉树的是() A.每个结点至多有两颗子树的树 B.哈夫曼树 C.每个结点至多有两颗子树的有序树 D.每个结点只有一颗右子树 E.以上答案都不对
请问ACD为什么错啊?
兜兜的卷心菜1年前1
逍遥的浪子 共回答了25个问题 | 采纳率96%
二叉树定义:二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成.
注意,如果子树是两棵那就要求两棵子树不相交,AB都存在这个问题不选;同时二叉树要求是有序的,D不能满足这个要求也不选;哈夫曼树就是按二叉树构造出来的,必须是二叉树
关于哈夫曼树的问题由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为多少?
fuge88881年前1
mysimplelife1 共回答了22个问题 | 采纳率90.9%
哈夫曼树如下:
(24)
(10) (14)
(5) 5 6 8
2 3
带权路径长度为 2*3 + 3*3 +5*2 +6*2 +8*2 = 53
9,2,7,5,4,3,8,12,10,如何构造哈夫曼树
piao_p1年前1
fthepopu 共回答了20个问题 | 采纳率90%
从大到小排列,然后将最小的两项相加,始终是最小的两项相加,加到最后就OK啦···