问题描述:
python计算机二级易错选择题汇总:
问题解答:
二叉树和部分列表操作的方法掌握不牢固。
————————————————————————————
7、设二叉树的前序序列为ABCDEF,中序序列为BDFECA,则该二叉树的深度为()(根结点为第1层)
A.6
B.2
c.3
D.4
要确定二叉树的深度,可以通过前序序列和中序序列构建二叉树,然后计算树的深度。给定:
- 前序序列:ABCDEF
- 中序序列:BDFECA
步骤 1:构建二叉树
-
前序序列的第一个节点是根节点:
- 根节点是 A。
-
在中序序列中找到根节点的位置:
- 根节点 A 在中序序列中的位置是最后一个位置 (6)。
-
中序序列被根节点 A 分割成左子树和右子树:
- 左子树的中序序列:BDFEC
- 右子树的中序序列:空
-
根据左子树的中序序列长度来分割前序序列:
- 左子树的前序序列:BCDEF
- 右子树的前序序列:空
步骤 2:递归构建左子树和右子树
继续递归构建左子树:
-
左子树的根节点是前序序列 BCDEF 的第一个节点 B。
-
在左子树的中序序列 BDFEC 中找到 B 的位置:
- B 在位置 1。
-
分割左子树的中序序列:
- B 的左子树的中序序列:空
- B 的右子树的中序序列:DFEC
-
分割左子树的前序序列:
- B 的左子树的前序序列:空
- B 的右子树的前序序列:CDEF
继续递归构建 B 的右子树:
-
B 的右子树的根节点是前序序列 CDEF 的第一个节点 C。
-
在 B 的右子树的中序序列 DFEC 中找到 C 的位置:
- C 在位置 4。
-
分割 B 的右子树的中序序列:
- C 的左子树的中序序列:DFE
- C 的右子树的中序序列:空
-
分割 B 的右子树的前序序列:
- C 的左子树的前序序列:DEF
- C 的右子树的前序序列:空
继续递归构建 C 的左子树:
-
C 的左子树的根节点是前序序列 DEF 的第一个节点 D。
-
在 C 的左子树的中序序列 DFE 中找到 D 的位置:
- D 在位置 1。
-
分割 C 的左子树的中序序列:
- D 的左子树的中序序列:空
- D 的右子树的中序序列:FE
-
分割 C 的左子树的前序序列:
- D 的左子树的前序序列:空
- D 的右子树的前序序列:EF
继续递归构建 D 的右子树:
-
D 的右子树的根节点是前序序列 EF 的第一个节点 E。
-
在 D 的右子树的中序序列 FE 中找到 E 的位置:
- E 在位置 2。
-
分割 D 的右子树的中序序列:
- E 的左子树的中序序列:F
- E 的右子树的中序序列:空
-
分割 D 的右子树的前序序列:
- E 的左子树的前序序列:F
- E 的右子树的前序序列:空
继续递归构建 E 的左子树:
-
E 的左子树的根节点是前序序列 F 的第一个节点 F。
-
在 E 的左子树的中序序列 F 中找到 F 的位置:
- F 在位置 1。
-
分割 E 的左子树的中序序列:
- F 的左子树的中序序列:空
- F 的右子树的中序序列:空
-
分割 E 的左子树的前序序列:
- F 的左子树的前序序列:空
- F 的右子树的前序序列:空
此时,我们已经构建了整棵二叉树:
A
/
B
\
C
/
D
\
E
/
F
步骤 3:计算深度
从根节点 A 到最深的叶节点 F,路径上的节点个数是 6 个,因此树的深度为 6。
正确答案是 A. 6。
——————————————————————————————————
9、设二叉树的前序序列为ABCDEF,中序序列为BDFECA,则该二叉树的后序序列为( )
A.ABCDEF
B.FEDCBA
C.BDFECA
D.CBAFED
为了确定二叉树的后序序列,我们需要先通过前序序列和中序序列构建二叉树,然后再进行后序遍历。给定:
- 前序序列:ABCDEF
- 中序序列:BDFECA
构建二叉树
-
前序序列的第一个节点是根节点:
- 根节点是 A。
-
在中序序列中找到根节点的位置:
- 根节点 A 在中序序列中的位置是最后一个位置 (6)。
-
中序序列被根节点 A 分割成左子树和右子树:
- 左子树的中序序列:BDFEC
- 右子树的中序序列:空
-
根据左子树的中序序列长度来分割前序序列:
- 左子树的前序序列:BCDEF
- 右子树的前序序列:空
构建左子树
继续递归构建左子树:
-
左子树的根节点是前序序列 BCDEF 的第一个节点 B。
-
在左子树的中序序列 BDFEC 中找到 B 的位置:
- B 在位置 1。
-
分割左子树的中序序列:
- B 的左子树的中序序列:空
- B 的右子树的中序序列:DFEC
-
分割左子树的前序序列:
- B 的左子树的前序序列:空
- B 的右子树的前序序列:CDEF
继续递归构建 B 的右子树:
-
B 的右子树的根节点是前序序列 CDEF 的第一个节点 C。
-
在 B 的右子树的中序序列 DFEC 中找到 C 的位置:
- C 在位置 4。
-
分割 B 的右子树的中序序列:
- C 的左子树的中序序列:DFE
- C 的右子树的中序序列:空
-
分割 B 的右子树的前序序列:
- C 的左子树的前序序列:DEF
- C 的右子树的前序序列:空
继续递归构建 C 的左子树:
-
C 的左子树的根节点是前序序列 DEF 的第一个节点 D。
-
在 C 的左子树的中序序列 DFE 中找到 D 的位置:
- D 在位置 1。
-
分割 C 的左子树的中序序列:
- D 的左子树的中序序列:空
- D 的右子树的中序序列:FE
-
分割 C 的左子树的前序序列:
- D 的左子树的前序序列:空
- D 的右子树的前序序列:EF
继续递归构建 D 的右子树:
-
D 的右子树的根节点是前序序列 EF 的第一个节点 E。
-
在 D 的右子树的中序序列 FE 中找到 E 的位置:
- E 在位置 2。
-
分割 D 的右子树的中序序列:
- E 的左子树的中序序列:F
- E 的右子树的中序序列:空
-
分割 D 的右子树的前序序列:
- E 的左子树的前序序列:F
- E 的右子树的前序序列:空
继续递归构建 E 的左子树:
-
E 的左子树的根节点是前序序列 F 的第一个节点 F。
-
在 E 的左子树的中序序列 F 中找到 F 的位置:
- F 在位置 1。
-
分割 E 的左子树的中序序列:
- F 的左子树的中序序列:空
- F 的右子树的中序序列:空
-
分割 E 的左子树的前序序列:
- F 的左子树的前序序列:空
- F 的右子树的前序序列:空
构建出的二叉树结构如下:
A
/
B
\
C
/
D
\
E
/
F
后序遍历(左 -> 右 -> 根)
按上述树结构进行后序遍历得到:
- 从 F 开始:F
- 回到 E:F, E
- 回到 D:F, E, D
- 回到 C:F, E, D, C
- 回到 B:F, E, D, C, B
- 回到 A:F, E, D, C, B, A
所以,后序序列为:F, E, D, C, B, A
正确答案是:B. FEDCBA
____________________________________________
____________________________________________________________________
21、以下关于随机运算函数库的描述,错误的是
A.random(a,b)产生一个a到b之间的随机小数
B.random.seedo函数初始化随机数种子,默认值是当前系统时间
C.random库的随机数是计算机按一定算法产生的,并非完全随机
D.Python内置的random库主要用于产生各种伪随机数序列
A. random(a,b)产生一个a到b之间的随机小数
- 这是错误的。Python 中没有
random(a, b)
函数。生成一个指定范围内的随机小数应该使用random.uniform(a, b)
。random.random()
函数生成的是 0 到 1 之间的随机小数。
B. random.seed0函数初始化随机数种子,默认值是当前系统时间
- 这是不准确的描述。
random.seed(a=None)
用于初始化随机数生成器。如果a
为None
,则使用当前系统时间作为种子。这里提到的random.seed0
是错误的,因为正确的函数名是random.seed
。
C. random库的随机数是计算机按一定算法产生的,并非完全随机
- 这是正确的。Python 的
random
库产生的是伪随机数,是通过算法计算出来的,并不是完全随机的。
D. Python内置的random库主要用于产生各种伪随机数序列
- 这是正确的。Python 的
random
库确实用于产生各种伪随机数序列。
因此,错误的描述是:
A. random(a,b)产生一个a到b之间的随机小数
_________________________________________________________________
ls.copy( ):复制ls中所有元素生成一个新列表。题目中列表ls使用.copy()方法复制后赋值给变量l2,l2中元素的改变不会影响l1,所以最后输出l1的内容为[1,2,3,4]。本题选D。
_____________________________________________________________
___________________________________________________________
正确选项
D. turtle.done()
其他选项的功能
A. turtle.clear()
- 这个函数清除当前
turtle
绘图窗口中的所有图形,但不关闭窗口。它相当于在同一个窗口中重置绘图,以便进行新的绘图操作。
B. turtle.setup()
- 这个函数用于设置
turtle
绘图窗口的大小和位置。可以指定窗口的宽度、高度以及窗口在屏幕上的位置。例如,turtle.setup(width, height, startx, starty)
。
C. turtle.penup()
- 这个函数抬起画笔,之后的移动不会在窗口中绘制路径。它常用于需要将画笔移动到另一个位置而不绘制线条的情况。
结论
为了让 turtle
画图结束后窗口不立即关闭,应使用 turtle.done()
。因此,正确答案是:
D. turtle.done()