class Device:
def work(self):
print("Device is working")
class Printer(Device):
def work(self):
print("Printer is printing")
class Scanner(Device):
def work(self):
print("Scanner is scanning")
if __name__ == '__main__':
d1 = Printer()
d2 = Scanner()
d1.work()
d2.work()
2分
登录后查看选项
03
下面代码在 main() 中有一行会导致错误,请找出来( )。
class Student:
def __init__(self, n, s):
self.__name = n
self.__score = s
def get_name(self):
return self.__name
def set_score(self, s):
self.__score = s
if __name__ == '__main__':
stu = Student("Tom", 85)
print(stu.get_name()) # ①
stu.set_score(90) # ②
print(stu.__score) # ③
print(stu.get_name()) # ④
2分
登录后查看选项
04
某文本编辑器把用户输入的字符依次压入栈 S 。用户依次输入 X, Y, Z, W 后,连续执行两次撤销操作。每次撤销都会弹出栈顶一个字符。此时栈从栈底到栈顶的内容是( )。
2分
登录后查看选项
05
假设循环队列数组长度为 N = 7 ,队空判断条件为 front == rear 。入队和出队操作如下:
N = 7
q = [0] * N
front = 3
rear = 3
def enqueue(x):
global rear
q[rear] = x
rear = (rear + 1) % N
def dequeue():
global front
front = (front + 1) % N
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def check(root):
if not root:
return True
q = deque()
q.append(root)
has_null = False
while q:
cur = q.popleft()
if not cur:
has_null = True
else:
if has_null:
return False
q.append(cur.left)
q.append(cur.right)
return True
2分
登录后查看选项
07
以下代码实现了二叉树的哪种遍历方式?
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def traverse(root):
if not root:
return
print(root.val, end=' ')
traverse(root.left)
traverse(root.right)
2分
登录后查看选项
08
已知一棵二叉树的先序遍历序列为: A B D E H C F G ,中序遍历序列为: D B H E A F C G ,则该二叉树的后序遍历序列是( )。
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def rightSideView(root):
result = []
if not root:
return result
q = deque([root])
while q:
sz = len(q)
for i in range(sz):
node = q.popleft()
__________________________
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
return result
2分
登录后查看选项
13
下面代码实现二叉搜索树的插入操作。假设树中不存在重复值,横线处应填写( )。
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def insertNode(root, x):
if not root:
return TreeNode(x)
if x < root.val:
__________________________
else:
root.right = insertNode(root.right, x)
return root
2分
登录后查看选项
14
给定一个整数数组 a ,每个元素表示一个位置上的数值。要求从数组中选择若干个元素,使得任意两个被选择的元素在原数组中都不相邻,并且所选元素的总和最大。函数 choose(a) 返回能够得到的最大总和,则横线处应填写( )。
def choose(a):
if not a:
return 0
n = len(a)
if n == 1:
return a[0]
dp = [0] * n
dp[0] = a[0]
dp[1] = max(a[0], a[1])
for i in range(2, n):
dp[i] = __________________________
return dp[-1]
2分
登录后查看选项
15
下面代码实现 0/1 背包的一维动态规划。第 i 个物品重量为 wt[i] ,价值为 val[i] ,背包容量为 W 。横线处应填写( )。
def knapsack(W, wt, val):
n = len(wt)
dp = [0] * (W + 1)
for i in range(n):
for w in range(W, wt[i] - 1, -1):
__________________________
return dp[W]
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def insertNode(root, x):
if not root:
return TreeNode(x)
if x < root.val:
root.right = insertNode(root.right, x)
else:
root.left = insertNode(root.left, x)
return root
2分
登录后查看选项
21
哈夫曼编码一定唯一,只要字符频率相同,得到的编码也一定完全相同。
2分
登录后查看选项
22
若用数组按层序存储完全二叉树,且根节点下标为 0 ,则下标为 i 的节点左孩子下标为 2 * i + 1 ,右孩子下标为 2 * i + 2 。
2分
登录后查看选项
23
以下代码可以正确地按层换行输出二叉树的节点值。
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def printByLevel(root):
if not root:
return
q = deque([root])
while q:
for i in range(len(q)):
cur = q.popleft()
print(cur.val, end=' ')
if cur.left:
q.append(cur.left)
if cur.right:
q.append(cur.right)
print()