关于哈夫曼树的问题,各位可以帮小女子看看嘛
这题表示哈夫曼树的节点的度要么是0要么是m
设度不为0(即非叶结点)的个数为X
则总的结点数为:X+n
除根结点外,其余的每一个结点都有一个分支连向一个结点,对于度为m的每个结点都有m个分支,而度为0的结点是没有分支的,所以从分支的情况来看
总的结点数位:X*m + 1(这里的1为根结点)
两者相等,所以答案是 (n-1) / (m-1)
设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中共有几个空指针域
由于哈夫曼树没有度为1的结点,因此,只有叶子结点有空的指针域
每个叶子有2个空指针域,于是空指针域数=2m个
有n个叶子的哈夫曼树的结点总数为( )
一共有2n-1个结点
设叶子节点个数为n,度为1的节点个数为m,度为2的节点个数为l.
显然易知:一颗二叉树的节点数 = 这个树的度加1(因为每个节点都是前一个节点的度,根节点除外,所以要加1)
故有 l + m + n = 2l + m + 1
—-》 n = l + 1
由于哈夫曼树没有度为1的节点,在m = 0
总节点 = n + m + l = 2n - 1
扩展资料
在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。
具有m个叶结点的哈夫曼树共有多少个结点
因为哈夫曼树除了m个叶子结点就是二度结点,边数=结点个数-1=n0+n2-1
边的个数=2*n2,联立方程可知n2=n0-1,故n2=m-1,所以总结点个数为2m-1
具有m个叶子结点的哈夫曼树共有多少个结点
叶子节点:度为0的节点
哈夫曼树没有度为1的节点
二叉树的性质:度为0的结点个数比度为2的多一个
所以度为2的节点个数为m-1
节点的总数=m+m-1=2m-1
简述哈夫曼树的性质
哈 夫 曼 树
2.9 二叉树的应用
2.9.1 哈夫曼树及应用
哈夫曼树又称最优树(二叉树),是一类带权路径最短的树。构造这种树的算法最早是由哈夫曼(Huffman)1952年提出,这种树在信息检索中很有用。
结点之间的路径长度:从一个结点到另一个结点之间的分支数目。
树的路径长度:从树的根到树中每一个结点的路径长度之和。
结点的带权路径长度:从该结点到树根之间的路径长度与结点上权的乘积。
树的带权路径长度:树中所有叶子结点的带权路径长度之和,记作:
WPL为最小的二叉树就称作最优二叉树或哈夫曼树。
完全二叉树不一定是最优二叉树。
哈夫曼树的构造:
(1)根据给定的n个权值{w1,w2,…,wn}构造n棵二叉树的集合F={T1,T2,…,Tn},其中Ti中只有一个权值为wi的根结点,左右子树为空;
(2)在F中选取两棵根结点的权值为最小的数作为左、右子树以构造一棵新的二叉树,且置新的二叉树的根结点的权值为左、右子树上根结点的权值之和。
(3)将新的二叉树加入到F中,删除原两棵根结点权值最小的树;
(4)重复(2)和(3)直到F中只含一棵树为止,这棵树就是哈夫曼树。
例1:
例2:
结点的存储结构:
构造哈夫曼树的算法说明:
#define n /* 叶子总数 */
#define m 2*n-1 /* 结点总数 */
证:由性质3,叶子结点数 n0=n2+1,故哈夫曼树结点总数为 n0+n2=n0+(n0-1)=2*n0-1
例3 在解某些判定问题时,利用哈夫曼树获得最佳判定算法。
(a)
WPL=0.05*1+0.15*2+0.4*3+0.3*4+0.1*4=3.15
(b)(c)
WPL=0.4*1+0.3*2+0.15*3+0.05*4+0.1*4=2.05 WPL=0.05*3+0.15*3+0.4*2+0.3*2+0.1*2=2.2
哈夫曼编码
从哈夫曼树根结点开始,对左子树分配代码“0”,右子树分配代码“1”,一直到达叶子结点为止,然后将从树根沿每条路径到达叶子结点的代码排列起来,便得到了哈夫曼编码。
例,对电文 EMCAD 编码。若等长编码,则
EMCAD =》 000001010011100 共15位
设各字母的使用频度为 {E,M,C,A,D}={1,2,3,3,4}。用频度为权值生成哈夫曼树,并在叶子上标注对应的字母,树枝分配代码“0”或“1”:
各字母的编码即为哈夫曼编码: EMCAD =》 000001011011 共12位
2.9.2 二叉排序树
二叉排序树是一种特殊结构的二叉树,它作为一种表的组织手段,通常被称为树表。可以作为一种排序和检索的手段。
定义 二叉排序树或是空树,或是具有下述性质的二叉树:其左子树上所有结点的数据值均小于根结点的数据值;右子树上所有结点的数据值均大于或等于根结点的数据值。左子树和右子树又各是一棵二叉排序树。
对二叉排序树,若按中序遍历就可以得到由小到大的有序序列。如上图,中序遍历得:
{2,3,4,8,9,9,10,13,15,18}
二叉排序树的生成
对任意一组数据元素序列{R1,R2,…,Rn},要生成一棵二叉排序树的过程为:
(1)令R1为二叉树的根;
(2)若R2《R1,令R2为R1左子树的根结点,否则R2为R1右子树的根结点;
(3)对R3,…,Rn结点的插入方法同上。
例,数据元素序列{10,18,3,8,12,2,7,3},其生成二叉排序树的过程如下:
二叉排序树中结点的删除
要求删除一个结点后的二叉树仍是一棵二叉排序树。算法思想,分以下几种情况考虑:
(1)被删除的结点是叶子结点,则只需修改其双亲结点的指针既可;
(2)被删除结点p只有左子树pL或右子树pR,此时只要使左子树pL或右子树pR成为p双亲结点q的左子树或右子树即可。
(3)若被删除结点p的左、右子树均非空,有两种做法:
*
令pL直接链接到q的左(或右)孩子链域上,pR链接到p结点中序前趋结点s上(s是pL最右下的结点);
*
以p结点的直接中序前趋或后继替代p所指结点,然后再从原二叉排序树中删去该直接前趋或后继。
具有m个叶结点的哈夫曼树共有多少个结点
Huffman树中没有度为1的结点
根据二叉树的性质:度为0的结点个数比度为2的多一个
因此具有m个叶子结点的Huffman树共有2m-1个结点
SJTU 《算法设计与分析》备考题
1、除根结点外,树上每个结点( )。
a. 可有一个孩子、任意多个双亲
b. 可有任意多个孩子、一个双亲
c. 只有一个孩子、一个双亲
d. 可有任意多个孩子、任意多个双亲
2、采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为( )。
a. (n+1)/2
b. n/2
c. (n-1)/2
d. n
3、采用二分查找方法查找长度为n的线性表时,每个元素的平均查找长度为( )。
a. O(log2n)
b. O(n2)
c. O(n)
d. O(nlog2n)
4、设顺序线性表中有n个数据元素,则删除表中第i个元素需向前移动( )个元素。
a. n-1-i
b. n-i
c. i
d. n+1-i
5、设顺序循环队列Q的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为( )。
a. (R-F+M)%M
b. F-R
c. (F-R+M)%M
d. R-F
6、设输入序列是1、2、3、…、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是( )。
a. n-1-i
b. 不能确定
c. n-i
d. n+1-i
7、设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为( )。
a. 5,3,4,6,1,2
b. 1,5,4,6,2,3
c. 3,1,2,5,4,6
d. 3,2,5,6,4,1
8、设用链表作为栈的存储结构,则退栈操作( )。
a. 必须判别栈是否为满
b. 必须判别栈是否为空
c. 对栈不作任何判别
d. 必须判别栈元素的类型
9、设用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为( )。
a. 第i列0元素的个数之和
b. 第i行0元素的个数之和
c. 第i列非0元素的个数之和
d. 第i行非0元素的个数之和
10、设某链表中最常用的操作是在链表的尾部插入或删除元素,则选用下列( )存储方式最节省运算时间。
a. 双向链表
b. 双向循环链表
c. 单向循环链表
d. 单向链表
11、设某棵二叉树的高度为10,则该二叉树上叶子结点最多有( )。
a. 1024
b. 256
c. 20
d. 512
12、设某棵二叉树的中序遍历序列为ABCD,先序遍历序列为CABD,则后序遍历该二叉树得到序列为( )。
a. CDAB
b. BADC
c. CBDA
d. BCDA
13、设某棵二叉树中有2000个结点,则该二叉树的最小高度为( )。
a. 9
b. 11
c. 12
d. 10
14、设某棵二叉树中只有度数为0和度数为2的结点,且度数为0的结点数为n,则这棵二叉树中共有( )个结点。
a. n+1
b. 2n
c. 2n+1
d. 2n-1
15、设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有( )条有向边。
a. n-1
b. m
c. n
d. m-1
16、设某无向图有n个顶点,则该无向图的邻接表中有( )个表头结点。
a. 2n-1
b. n
c. n/2
d. 2n
17、设某无向图中有n个顶点e条边,则该无向图中所有顶点的度之和为( )。
a. 2e
b. n
c. e
d. 2n
18、设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为( )。
a. O(n\*e)
b. O(n+e)
c. O(n2)
d. O(n3)
19、设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={《01,02》,《01,03》,《01,04》,《02,05》,《02,06》,《03,07》,《03,08》,《03,09》},则数据结构A是( )。
a. 图结构
b. 物理结构
c. 线性结构
d. 树型结构
20、设某强连通图中有n个顶点,则该强连通图中至少有( )条边。
a. n(n-1)
b. n
c. n+1
d. n(n+1)
21、设某完全无向图中有n个顶点,则该完全无向图中有( )条边。
a. n
b. n-1
c. n(n-1)
d. n(n-1)/2
22、设某哈夫曼树中有199个结点,则该哈夫曼树中有( )个叶子结点。
a. 99
b. 101
c. 100
d. 102
23、设某二叉树中度数为0的结点数为N0,度数为1的结点数为N1,度数为2的结点数为N2,则下列等式成立的是( )。
a. N0=N1+N2
b. N0=N2+1
c. N0=2N1+1
d. N0=N1+1
24、设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
a. 7
b. 6
c. 8
d. 5
25、设无向图G中有n个顶点,则该无向图的最小生成树上有( )条边。
a. 2n-1
b. n
c. n-1
d. 2n
26、设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为( )。
a. i/2
b. 2i+1
c. 2i
d. 2i-1
27、设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作为( )。
a. top=top+1;
b. top-》next=top;
c. top=top-》next;
d. top=top-1;
28、设指针变量p指向双向链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为( )。
a. p-》next=s; s-》prior=p; p-》next-》prior=s; s-》next=p-》next;
b. s-》prior=p; s-》next=p-》next; p-》next=s; p-》next-》prior=s;
c. p-》next=s; p-》next-》prior=s; s-》prior=p; s-》next=p-》next;
d. s-》prior=p;s-》next=p-》next;p-》next-》prior=s; p-》next=s;
29、设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为( )。
a. q=p-》next;q-》data=p-》data;p-》next=q-》next;free(q);
b. q=p-》next;p-》data=q-》data;free(q);
c. q=p-》next;p-》next=q-》next;free(q);
d. q=p-》next;p-》data=q-》data;p-》next=q-》next;free(q);
30、设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为( )。
a. front-》next=s;front=s;
b. rear-》next=s;rear=s;
c. s-》next=front;front=s;
d. s-》next=rear;rear=s;
31、设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B插入结点X的操作序列为( )。
a. p-》next=s-》next;s-》next=p;
b. p-》next=s;s-》next=q;
c. s-》next=p-》next;p-》next=-s;
d. q-》next=s; s-》next=p;
32、设带有头结点的单循环链表的头指针为head,则其判空条件是( )。
a. head-》next==head
b. head==NULL
c. head-》next==NULL
d. head!= NULL
33、设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有( )个空指针域。
a. 4m
b. 2m-1
c. 2m+1
d. 2m
34、设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是( )。
a. 任一结点无左孩子
b. 任一结点无右孩子
c. 高度等于其结点数
d. 空或只有一个结点
35、设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为( )。
a. O(1)
b. O(n)
c. O(n2)
d. O(nlog2n)
36、设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为( )。
a. 40
b. 45
c. 30
d. 20
37、设一棵完全二叉树中有65个结点,则该完全二叉树的深度为( )。
a. 7
b. 6
c. 5
d. 8
38、设一条单链表的头指针为head,且该链表没有头结点,则其判空条件是( )。
a. head==NULL
b. head-》next==head
c. head-》next==NULL
d. head!=NULL
39、设F是由T1、T2和T3三棵树组成的森林,与F对应的二叉树为B,T1、T2和T3的结点数分别为N1、N2和N3,则二叉树B的根结点的左子树的结点数为( )。
a. N2+N3
b. N1-1
c. N1+N3
d. N2-1
40、若采用邻接表存储结构,则图的深度优先搜索类似于二叉树的( )
a. 层次遍历
b. 先根遍历
c. 中根遍历
d. 后根遍历
41、若采用邻接表存储结构,则图的广度优先搜索类似于二叉树的( )
a. 先根遍历
b. 后根遍历
c. 层次遍历
d. 中根遍历
42、若线性表最常用的操作是存取第i个元素及其前驱的值,则采用( )存储方式最节省时间。
a. 双向链表
b. 顺序表
c. 单链表
d. 单循环链表
43、若一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的第一趟结果为( )。
a. 40,38,46,56,79,84
b. 40,38,46,84,56,79
c. 38,40,46,56,79,84
d. 40,38,46,79,56,84
44、若一个图的边集为 {(A,B),(A,C),(B,D),(C,F),(D,E),(D,F)} ,则从顶点 A 开始对该图进行深度优先搜索,得到的顶点序列可能为( )。
a. A,B,C,F,D,E
b. A,C,F,D,E,B
c. A,B,D,F,E,C
d. A,B,D,C,F,E
45、若一个图的边集为 {(A,B),(A,C),(B,D),(C,F),(D,E),(D,F)} ,则从顶点 A 开始对该图进行广度优先搜索,得到的顶点序列可能为( )。
a. A,B,C,F,D,E
b. A,B,C,D,E,F
c. A,B,D,C,E,F
d. A,C,B,F,D,E
46、线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。
a. 连续或不连续都可以
b. 必须是连续的
c. 部分地址必须是连续的
d. 一定是不连续的
47、用链接方式存储的队列,在进行插入运算时( )。
a. 仅修改尾指针
b. 头、尾指针都要修改
c. 仅修改头指针
d. 头、尾指针都不要修改
48、用邻接表存储图所用的空间大小( )。
a. 只与图的边数有关
b. 与图的顶点数和边数都有关
c. 只与图的顶点数有关
d. 与边数的平方有关
49、树的后根遍历序列等同于该树对应的二叉树的( )。
a. 先序序列
b. 中序序列
c. 后序序列
d. 层次序列
50、树型结构最适合用来表示( )。
a. 无序数据元素
b. 有序数据元素
c. 元素之间无联系的数据
d. 元素之间具有分支层次关系的数据
51、栈。和队列的共同点是( )。
a. 只允许在端点处插入和删除元素
b. 都是先进后出
c. 都是先进先出
d. 没有共同点
52、数据结构是研究数据的( )以及它们之间的相互关系。
a. 理想结构,抽象结构
b. 物理结构,逻辑结构
c. 理想结构,物理结构
d. 抽象结构,逻辑结构
53、数据的最小单位是( )。
a. 数据元素
b. 数据项
c. 数据类型
d. 数据变量
54、已知一个有向图的边集为 {《a,b》,《a,c》,《a,d》,《b,d》,《b,e》,《d,e》} ,则由该图产生的一种可能的拓扑序列为( )。
a. a,b,c,d,e
b. a,c,b,e,d
c. a,b,d,e,b
d. a,c,d,b,e
55、对线性表进行二分查找时,要求线性表必须( )。
a. 以链接方式存储
b. 以链接方式存储,且结点按关键字有序排序
c. 以顺序方式存储,且结点按关键字有序排序
d. 以顺序方式存储
56、在长度为n的顺序存储的线性表中插入第i个元素(1≤i≤n)需向后移动( )个元素。
a. n-i
b. i
c. n-1-i
d. n-i+1
57、在用邻接表表示图时,对图进行深度优先搜索遍历的算法的时间复杂度为( )。
a. O(n2)
b. O(n+e)
c. O(n3)
d. O(n)
58、在有向图的邻接表存储结构中,顶点v在链表中出现的次数是( )。
a. 顶点v的度
b. 依附于顶点v的边数
c. 顶点v的入度
d. 顶点v的出度
59、在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是( )。
a. G中有一条从Vi到Vj的路径
b. G中有弧
c. G中没有弧
d. G中有一条从Vj到Vi的路径
60、在下列存储形式中,哪一个不是树的存储形式?( )
a. 孩子链表表示法
b. 顺序存储表示法
c. 孩子兄弟表示法
d. 双亲表示法
61、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行( )。
a. q-》next = s;s-》next = p;
b. s-》next = p-》next;p-》next = s;
c. p-》next = s-》next;s-》next = p;
d. p-》next = s;s-》next = q;
62、在一个具有n个顶点的无向图中,每个顶点度的最大值为( )
a. n-1
b. n+1
c. n
d. 2(n-1)
63、图的BFS生成树的树高比DFS生成树的树高( )。
a. 大或相等
b. 小
c. 小或相等
d. 大
64、含有n个结点的二叉树采用二叉链表存储时,空指针域的个数为( )。
a. n
b. n+1
c. n+2
d. n-1
65、关于无向图的邻接矩阵的说法中正确的是( )。
a. 矩阵中的非零元素个数等于图的边数
b. 矩阵中非全零元素的行数等于图中的顶点数
c. 第i行上非零元素个数和第i列上非零元素个数一定相等
d. 第i行上与第i列上非零元素总和等于顶点Vi的度数
66、二叉树的第k层的结点数最多为( )。
a. 2k
b. 2k -1
c.2k
d. 2k-1
67、二叉排序树按( )遍历可以得到一个从小到大的有序序列。
a. 后序
b. 中序
c. 层次
d. 先序
68、下面程序的时间复杂为( )。
for(i=1, s=0; i《=n; i++)
{ t=1;
for(j=1; j《=i; j++)
t=t*j; s=s+t;
}
a. O(n3)
b. O(n)
c. O(n2)
d. O(n4)
69、下面程序段的时间复杂度为( )。
s=i=0;
do { i=i+1; s=s+i;
} while(i《=n);
a. O(n)
b. O(nlog2n)
c. O(n2)
d. O(1)
70、下面关于线性表的叙述错误的是( )。
a. 线性表采用链式存储不必占用一片连续的存储空间
b. 线性表采用顺序存储必须占用一片连续的存储空间
c. 线性表采用顺序存储便于插入和删除操作的实现
d. 线性表采用链式存储便于插入和删除操作的实现
71、下述编码中哪一个不是前缀编码( )。
a. 0,10,110,111
b. 00,01,10,11
c. 1,01,000,001
d. 0,1,00,11
72、下列说法不正确的是( )。
a. 图的深度遍历不适用于有向图
b. 图的深度遍历是一个递归过程
c. 遍历的基本方法有两种:深度遍历和广度遍历
d. 图的遍历是从给定的源点出发每个顶点仅被访问一次
73、下列有关图遍历的说法中不正确的是( )。
a. 非连通图不能用深度优先搜索法
b. 连通图的深度优先搜索是一个递归过程
c. 图的遍历要求每一顶点仅被访问一次
d. 图的广度优先搜索中邻接点的寻找具有“先进先出”的特征
74、下列哪种图的邻接矩阵为对称矩阵? ( )
a. 带权有向图
b. 有向图
c. 无向图
d. 有向图或无向图
75、一个带权的无向连通图的最小生成树( )。
a. 只有一棵
b. 一定有多棵
c. 有一棵或多棵
d. 可能不存在
76、顺序表是线性表的()
a. 链式存储结构
b. 顺序存储结构
c. 索引存储结构
d. 散列存储结构
77、线性表若采用链式存储结构时,要求内存中可用存储单元的地址()
a. 必须是连续的
b. 部分地址必须是连续的
c. 一定是不连续的
d. 连续或不连续都可以
78、一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是()
a. e,d,c,b,a
b. d,e,c,b,a
c. d,c,e,a,b
d. a,b,c,d,e
79、在下列链表中,不能从任一结点出发访问到表中的所有结点的是()
a. 单链表
b. 单向循环链表
c. 双向循环链表
d. 循环链表
80、二叉树结点度的集合为()。
a. (1)
b. (0,1,2)
c. (1,2)
d. (0)
81、以二分查找方法查找一个线性表时,此线性表必须是()。
a. 顺序存储的有序表
b. 链式存储的有序表
c. 链表
d. 顺序表
82、设哈夫曼树的叶子结点的个数为n,那么该树的结点总数为()
a.2n
b.2n+1
c.2n-1
c.不能唯一确定
83、对二叉树来说,第i层上至多有()个结点。
a. 2i
b. 2i-1
c. 2i-1
d. 2i-1-1
84、数据结构包括3个方面的内容,它们是()。
a. 数据、数据元素、数据项
b. 数据元素、数据处理、算法实现
c. 数据元素、数据的逻辑结构、数据的存储结构
d. 数据的逻辑结构、数据的存储结构、数据的操作
85、数据在计算机存储器内表示时,存储结点连续存放且存储顺序与逻辑顺序相同,这种存储方式称为()。
a. 索引存储方式
b. 顺序存储方式
c. 链式存储方式
d. 散列存储方式
86、冒泡排序属于()。
a. 插入排序
b. 选择排序
c. 快速排序
d. 交换排序
87、下列程序段的时间复杂度为()。
i=1;j=0;
while(i+j《=n)
{if(i》j)j++;
elsei++;
}
a. O(n)
b. O(nlog2n)
c. O(i*j)
d. O(i+j)
88、下面程序的时间复杂为()。
for(i=1,s=0;i《=n;i++)
{t=1;for(j=1;j《=i;j++)t=t*j;s=s+t;}
a. O(n)
b. O(n2)
c. O(n3)
d. O(n4)
89、含有n个结点的二叉树采用二叉链表存储时,空指针域的个数为()。
a. n-1
b. n
c. n+1
d. n+2
90、设某完全无向图中有n个顶点,则该完全无向图中有()条边。
a. n(n-1)/2
b. n(n-1)
c. n
d. n-1
1、调用一次深度优先遍历可以访问到图中的所有顶点。(F)
2、分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。(T)
3、冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。(T)
4、满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。(T)
5、设一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。(F)
6、线性表的顺序存储结构比链式存储结构更好。(F)
7、不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑“溢出”情况。(T)
8、完全二叉树中的叶子结点只可能在最后两层中出现。(T)
9、由树转化成二叉树,该二叉树的右子树不一定为空。(F)
10、线性表中的所有元素都有一个前驱元素和后继元素。(F)
1、head指向单链表的表头,p指向单链表的表尾结点,则执行p-》next=head后,该单链表构成 循环链表
2、在单链表中,若p和s是两个指针,且满足p-》next与s相同,则语句p-》next=s-》next的作用是 删除 s指向的结点。
3、在一个长度为n的顺序表中的第i(1≤i≤n+1)个元素之前插入一个元素时,需向后移动的元素个数为 n-i+1 。
4、设顺序线性表中有n个数据元素,则删除表中第i个元素需向前移动 n-i 个元素。
5、衡量一个算法,除了正确性之外,主要考虑的两个方面是 时间复杂度 和 空间复杂度 。
6、在一个具有n个顶点的无向完全图中,包含 n(n-1)/2 条边。
7、对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小为 n^2 。
8、采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为 (n+1)/2 。
9、树型结构最适合用来表示元素之间具有 分支层次关系 的数据。
1、已知一棵二叉树的先(前)序遍历序列为ABDEGCFH,中序遍历序列为DBGEACFH,请画出该二叉树,并写出该二叉树的后序序列。
2、画出一棵二叉树,使其:中序序列为DCBGEAHFIJK,后序序列:DCEGBFHKJIA
3、请写出对(53, 87, 12, 61,98,17, 97, 75, 53, 26)进行一次划分的过程。
4、有一结点序列为(7,19,2,6,32,3,21,10),要求以该序列作为带权二叉树中结点的权值,构造并画出一棵哈夫曼树,并计算其带权路径长度。
5、对下面所示的无向网,要求构造出一棵最小生成树(中间过程可以省略),并计算该最小生成树的权。
6、下面所示为有向图的邻接表,试画出该有向图,并给出由顶点V1开始的深度优先遍历和广度优先遍历的结果。
7、有一结点序列为(45,24,53,12,28,90),要求构造并画出一棵二叉排序树,并输出以中序方式遍历该树的序列。
设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有几个空指针,求详细
Huffman 树为正则二叉树,因此,只有度为2和度为0的结点,如果用二叉链表来存储,度为2的结点的左右孩子都存在,没有空指针,度为0的叶子没有孩子,因此左右孩子的链域都为空,因此该Huffman树一共有2m个空指针。
在英文中,e的出现机率最高,而z的出现概率则最低。当利用霍夫曼编码对一篇英文进行压缩时,e极有可能用一个比特来表示,而z则可能花去25个比特(不是26)。
用普通的表示方法时,每个英文字母均占用一个字节,即8个比特。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。
扩展资料:
动态哈夫曼编码使用一棵动态变化的哈夫曼树,对第t+1个字符的编码是根据原始数据中前t个字符得到的哈夫曼树来进行的,编码和解码使用相同的初始哈夫曼树,每处理完一个字符,编码和解码使用相同的方法修改哈夫曼树。
所以没有必要为解码而保存哈夫曼树的信息。编码和解码一个字符所需的时间与该字符的编码长度成正比,所以动态哈夫曼编码可实时进行。
在有N个叶子节点的哈夫曼树中,其节点总数为()
在哈夫曼树(也叫最优树)中,只有两种类型的结点:度为0或N,即最优二叉树中只有度为0或2的结点,最优三叉树中只有度为0或3的结点,所以有2N-1个节点 。
给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
扩展资料:
哈夫曼树也可以是k叉的,只是在构造k叉哈夫曼树时需要先进行一些调整。构造哈夫曼树的思想是每次选k个权重最小的元素来合成一个新的元素,该元素权重为k个元素权重之和。但是当k大于2时,按照这个步骤做下去可能到最后剩下的元素少于k个。
解决这个问题的办法是假设已经有了一棵哈夫曼树(且为一棵满k叉树),则可以计算出其叶节点数目为(k-1)nk+1,式子中的nk表示子节点数目为k的节点数目。
于是对给定的n个权值构造k叉哈夫曼树时,可以先考虑增加一些权值为0的叶子节点,使得叶子节点总数为(k-1)nk+1这种形式,然后再按照哈夫曼树的方法进行构造即可。