1-1
某二叉树的前序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无右孩子。
F
1-2
存在一棵总共有2016个结点的二叉树,其中有16个结点只有一个孩子。
F
1-3
哈夫曼树中一定没有度为 1 的结点。
T
1-4
一棵非空二叉树,若先序遍历与后序遍历的序列相反,则该二叉树只有一个叶子结点。
T
1-5
某二叉树的前序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无左孩子。
T
1-6
已知一棵二叉树的先序遍历结果是ABC, 则CAB不可能是中序遍历结果。
T
1-7
一棵有124个结点的完全二叉树,其叶结点个数是确定的。
T
1-8
对于一个有N个结点、K条边的森林,不能确定它共有几棵树。
F
1-9
对N(≥2)个权值均不相同的字符构造哈夫曼树,则树中任一非叶结点的权值一定不小于下一层任一结点的权值。
T
1-10
若一个结点是某二叉树的中序遍历序列的最后一个结点,则它必是该树的前序遍历序列中的最后一个结点。
F
1-11
某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无右孩子。
T
1-12
某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无左孩子。
F
1-13
将一棵完全二叉树存于数组中(根结点的下标为1)。则下标为23和24的两个结点是兄弟。
F
1-14
若一个结点是某二叉树的中序遍历序列的最后一个结点,则它必是该树的前序遍历序列中的最后一个结点。
F
1-15
哈夫曼编码是一种最优的前缀码。对一个给定的字符集及其字符频率,其哈夫曼编码不一定是唯一的,但是每个字符的哈夫曼码的长度一定是唯一的。
F
2-1
树最适合于用来表示(元素之间具有分支层次关系的数据)
2-2
设每个d叉树的结点有d个指针指向子树,有n个结点的d叉树有多少空链域?( n(d−1) + 1 )
2-3
某二叉树的中序序列和后序序列正好相反,则该二叉树一定是(任一结点无左孩子)
2-4
某二叉树的前序和后序遍历序列正好相反,则该二叉树一定是(高度等于其结点数)
2-5
已知一棵二叉树的先序遍历结果是ABC,则以下哪个序列是不可能的中序遍历结果:(CAB)
2-6
如果二叉树的后序遍历结果是FDEBGCA,中序遍历结果是FDBEACG,那么该二叉树的前序遍历结果是什么?(ABDFECG)
2-7
如果A和B都是二叉树的叶结点,那么下面判断中哪个是对的?
A.存在一种二叉树结构,其前序遍历结果是…A…B…,而中序遍历结果是…B…A…
B.存在一种二叉树结构,其中序遍历结果是…A…B…,而后序遍历结果是…B…A…
C.存在一种二叉树结构,其前序遍历结果是…A…B…,而后序遍历结果是…B…A…
D.以上三种都是错的
2-8
给定二叉树如下图所示。设N代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。若遍历后的结点序列为3、1、7、5、6、2、4,则其遍历方式是:(RNL)
2-9
在下述结论中,正确的是:(①④)
①只有一个结点的二叉树的度为0;
②二叉树的度为2;
③二叉树的左右子树可任意交换;
④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树
2-10
任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序(不发生改变)
2-11
按照二叉树的定义,具有3个结点的二叉树有几种?(5)
2-12
二叉树中第5层(根的层号为1)上的结点个数最多为:(16)
性质1:二叉树第i层上的结点数目最多为 2^(i-1)(i≥1)。
性质2:深度为k的二叉树至多有2^k -1个结点(k≥1)。
2-13
先序遍历图示二叉树的结果为(A,B,D,H,I,E,C,F,G)
2-14
已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是:(111)
2-15
具有65个结点的完全二叉树其深度为(根的深度为1): (7)
2-16
下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是:
2-17
对于一个有N个结点、K条边的森林,共有几棵树?(N−K)
2-18
设森林F中有三棵树,第一、第二、第三棵树的结点个数分别为M1,M2和M3。则与森林F对应的二叉树根结点的右子树上的结点个数是:(M2+M3)
2-19
对N(N≥2)个权值均不相同的字符构造哈夫曼树。下列关于该哈夫曼树的叙述中,错误的是:(该树一定是一棵完全二叉树)
2-20
设一段文本中包含字符{a, b, c, d, e},其出现频率相应为{3, 2, 5, 1, 1}。则经过哈夫曼编码后,文本所占字节数为:(25)
2-21
设一段文本中包含4个对象{a,b,c,d},其出现次数相应为{4,2,5,1},则该段文本的哈夫曼编码比采用等长方式的编码节省了多少位数?(2)
2-22
由分别带权为9、2、5、7的四个叶子结点构成一棵哈夫曼树,该树的带权路径长度为:(44)
2-23
已知一棵完全二叉树的第9层(设根为第1层)有100个叶结点,则该完全二叉树的结点个数最多是:(823)
2-24
如果二叉树的前序遍历结果是12345,后序遍历结果是32541,那么该二叉树的中序遍历结果是什么?(无法确定)
2-25
二叉树的中序遍历也可以循环地完成。给定循环中堆栈的操作序列如下(其中push为入栈,pop为出栈):push(1), push(2), push(3), pop(), push(4), pop(), pop(), push(5), pop(), pop(), push(6), pop()
以下哪句是对的?(3和5是兄弟结点)
2-26
具有1102个结点的完全二叉树一定有(551)个叶子结点
2-27
下面的函数PreOrderPrintLeaves(BinTree BT)按前序遍历的顺序打印出二叉树BT的所有叶子结点。则下列哪条表达式应被填在空中?
!(BT->Left || BT->Right)
2-28
若森林F有15条边、25个结点,则F包含树的个数是:(10)
2-29
要使一棵非空二叉树的先序序列与中序序列相同,其所有非叶结点须满足的条件是:(只有右子树)
2-30
已知字符集{ a, b, c, d, e, f, g, h }。若各字符的哈夫曼编码依次是 0100, 10, 0000, 0101, 001, 011, 11, 0001,则编码序列 0100011001001011110101 的译码结果是:(afeefgd)
2-31
一棵二叉树中,双分支结点数为15,单分支结点数为30,则叶子结点数为(16)个。
2-32
若根节点为高度1,一棵具有 1025 个结点的二叉树的高度为(11~1025 之间)
2-33
设一棵非空完全二叉树 T 的所有叶节点均位于同一层,且每个非叶结点都有 2 个子结点。若 T 有 k 个叶结点,则 T 的结点总数是:(2k−1)
2-34
已知字符集{ a, b, c, d, e, f },若各字符出现的次数分别为{ 6, 3, 8, 2, 10, 4 },则对应字符集中各字符的哈夫曼编码可能是:(00, 1011, 01, 1010, 11, 100)
2-35
已知二叉树的先序遍历序列为ABCDEFGH,中序遍历序列为CBEDFAGH,则该二叉树形态中,父节点的右子节点为(G)。
2-36
若将一棵树 T 转化为对应的二叉树 BT,则下列对 BT 的遍历中,其遍历序列与 T 的后根遍历序列相同的是:(中序遍历)
2-37
对 n 个互不相同的符号进行哈夫曼编码。若生成的哈夫曼树共有 115 个结点,则 n 的值是:(58)
2-38
设 T 是非空二叉树,若 T 的先序遍历和中序遍历序列相同,则 T 的形态是(所有结点只有右孩子)
2-39
设 T 是非空二叉树,若 T 的先序遍历和后序遍历序列相同,则 T 的形态是 (只有一个根结点)
2-40
设 T 是非空二叉树,若 T 的后序遍历和中序遍历序列相同,则 T 的形态是(所有结点只有左孩子)
2-41
以二叉链表作为二叉树的存储结构,在具有 n 个结点的二叉链表中(n>0),空链域的个数为(n+1)
2-42
已知二叉树的前序遍历序列为 ABDCEFG,中序遍历序列为 DBCAFEG,则后序遍历序列为(DCBFGEA)
2-43
对于任意一棵高度为 5 且有 10 个结点的二叉树,若采用顺序存储结构保存,每个结点占 1 个存储单元(仅存放结点的数据信息),则存放该二叉树需要的存储单元的数量至少是:(31)
因为是顺序存储结构保存,所以需要的存储单元是给定高度的全部结点都要考虑。
高度为5的满二叉树共有:
25-1=31个结点
31*1个存储单元=31;
2-44
已知森林 F 及与之对应的二叉树 T,若 F 的先根遍历序列是 a, b, c, d, e, f,后根遍历序列是 b, a, d, f, e, c,则 T 的后序遍历序列是:(b, f, e, d, c, a)
2-45
一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶子结点个数是( 82 )。
2-46
一棵二叉树中有7个度为2的结点和5个度为1的结点,其总共有(20 )个结点。
2-47
某森林 F 对应的二叉树为 T,若 T 的先序遍历序列是 a, b, d, c, e, g, f,中序遍历序列是 b, d, a, e, g, c, f,则 F 中的树的棵树是:(3)
2-48
若某二叉树有 5 个叶结点,其权值分别为 10、12、16、21、30,则其最小的带权路径长度(WPL)是:(200)
2-49
对一棵二叉树的结点从 1 开始顺序编号。要求每个结点的编号小于其左、右孩子的编号,且左孩子的编号小于右孩子的编号。可采用 (先序遍历)实现编号。
以下说法错误的是( )。
A.哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。
B.若一个二叉树的树叶是某子树的中序遍历序列中的第一个结点,则它必是该子树的后序遍历序列中的第一个结点
C.已知二叉树的前序遍历和后序遍历序列并不能唯一确定这棵树,因为不知道树的根结点是哪一个。
D.在前序遍历二叉树的序列中,任何结点的子树的所有结点都是直接跟在该结点之后。
下列代码的功能是将二叉树T中的结点按照层序遍历的顺序输出。
typedef struct TreeNode* Tree;
struct TreeNode
{
int Key;
Tree Left;
Tree Right;
};
void Level_order(Tree T)
{
Queue Q;
if (!T) return;
Q = CreateQueue(MaxElements);
Enqueue(T, Q);
while (!IsEmpty(Q)) {
T = Front_Dequeue(Q); /* return the front element and delete it from Q */
printf("%d ", T->Key);
if (T->Left)
@@ Enqueue(T->Left, Q) @@;
if (@@ T->Right @@)
@@ Enqueue(T->Right, Q) @@;
}
}
下列代码的功能是计算给定二叉树T的宽度。二叉树的宽度是指各层结点数的最大值。函数Queue_rear和Queue_front分别返回当前队列Q中队尾和队首元素的位置。
typedef struct TreeNode *BinTree;
struct TreeNode
{
int Key;
BinTree Left;
BinTree Right;
};
int Width( BinTree T )
{
BinTree p;
Queue Q;
int Last, temp_width, max_width;
temp_width = max_width = 0;
Q = CreateQueue(MaxElements);
Last = Queue_rear(Q);
if ( T == NULL) return 0;
else {
Enqueue(T, Q);
while (!IsEmpty(Q)) {
p = Front_Dequeue(Q);
@@ temp_width++ @@;
if (p->Left != NULL) Enqueue(p->Left, Q);
@@if (p->Right != NULL) Enqueue(p->Right, Q) @@;
if (Queue_front(Q) > Last) {
Last = Queue_rear(Q);
if (temp_width > max_width) max_width = temp_width;
@@ temp_width=0 @@;
} /* end-if */
} /* end-while */
return max_width;
} /* end-else */
}