关于哈夫曼树,下面说法正确的是( )。
不可能是满二叉树
哈夫曼树是一种用于数据压缩的二叉树
权值较大的结点离根较远
构建哈夫曼树的时间复杂度为O(logn)
给定一组权值{3, 4, 7, 14, 15, 20},计算带其权路径长度(WPL)为( )。
147
146
142
145
二叉树T,已知其先根遍历是 1 2 4 3 5 7 6(数字为结点的编号,以下同),中根遍历是 2 4 1 5 7 3 6,则该二叉树的后根遍历是( )。
4 2 5 7 6 3 1
4 2 7 5 6 3 1
7 4 2 5 6 3 1
4 2 7 6 5 3 1
一棵二叉树的前序遍历序列是 ABCDEFG,后序遍历序列是 CBFEGDA,则根结点的左子树的结点个数可能是( )。
2
3
4
5
完全二叉树的顺序存储方案,是指将完全二叉树的结点从上至下、从左至右依次存放到一个顺序结构的数组中。假定根结点存放在数组的 1 号位置,则第 k 号结点的父结点如果存在的话,应当存放在数组的( )号位置。
2k
2k+1
⌊k/2⌋
⌊(k+1)/2⌋
如果根结点的深度记为 1,则一棵恰有 2011 个叶结点的二叉树的深度最少是( )。
10
11
12
13
广度优先搜索时,需要用到的数据结构是( )。
链表
队列
栈
散列表
如果一个栈初始时为空,且当前栈中的元素从栈底到栈顶依次为 a,b,c,另有元素 d 已经出栈,则可能的入栈顺序是( )。
a,d,c,b
b,a,c,d
a,c,b,d
d,a,b,c
在程序运行过程中,如果递归调用的层数过多,会因为( )引发错误。
系统分配的栈空间溢出
系统分配的堆空间溢出
系统分配的队列空间溢出
系统分配的链表空间溢出
一棵具有 5 层的满二叉树中结点数为( )。
31
32
33
16
今有一空栈
f
c
a
b
如果根的高度为 1,具有 61 个结点的完全二叉树的高度为( )
5
6
7
8
面向对象程序设计将对象作为程序的基本单元,将数据和程序封装在对象中,以提高软件的重用性、灵活性和扩展性。下面关于面向对象程序设计的说法中,不正确的是( )。
C:当前较为流行的面向对象的编程语言有 C++、JAVC# 等。
面向对象程序设计方法具有继承性、封装性和多态性等特点。
面向对象程序设计中对对象的成员属性的改变通常通过对象的成员函数实现。
前序遍历序列与中序遍历序列相同的二叉树为( )。
根结点无左子树
根结点无右子树
只有根结点的二叉树或非叶子结点只有左子树的二叉树
只有根结点的二叉树或非叶子结点只有右子树的二叉树
下面程序是一个二叉排序树的,横线处应该填入的是( )。
class BinarySortTree:
def __init__(self):
self.root = None
def insert(self, key, value):
node = TreeNode(key, value)
if self.root is None:
self.root = node
return
current = self.root
while True:
if key < current.key:
___________________________
current = current.left
else:
if current.right is None:
current.right = node
return
current = current.right
def search(self, key):
current = self.root
while current:
if current.key == key:
return current.value
elif current.key > key:
current = current.left
else:
current = current.right
return None
def inorder_traversal(self, node):
if node:
self.inorder_traversal(node.left)
print(node.key, node.value)
self.inorder_traversal(node.right)
if current.left is None:
current.right = node
return
if current.right is None:
current.right = node
return
if current.right is None:
current.left = node
return
if current.left is None:
current.left = node
return
在哈夫曼树中,从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。
对
错
满二叉树每一层的结点个数都达到了最大值。
对
错
如果一棵二叉树是满二叉树, 但是它不一定是完全二叉树。
对
错
栈中元素的插入和删除操作都在栈的顶端进行,所以方便用双向链表比单向链表更合适表实现。
对
错
格雷码是一种变权码,每一位码没有固定的大小。
对
错
格雷码的基本特点就是任意两个相邻的代码只有一位二进制数不同。
对
错
栈是一种只能在一端进行插入和删除操作的特殊线性表。
对
错
最后进入队列的元素才能最先从队列中删除。
对
错
当队列为满时,做出队运算产生的溢出现象,常用作程序控制转移的条件。
对
错
在循环队列的上下文中,rear指针通常用于指示队列尾部元素的下一个位置,而不是直接指示队列尾部的元素。因此,rear的计算通常与入队操作相关。
对
错