资源简介 (.) (.)树与二叉树一 、选择题(每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)1.一棵度为3,深度为4的树,最多含有的节点个数是A.31 B.32C.40 D.422. 下列关于树的说法,不正确的是A.树形结构的特点是一个节点可以有多个直接前驱B.树形结构可以表达(组织)比线性结构更复杂的数据C.树(及一切树形结构)是一种分支层次结构D.只含一个节点的集合也是一棵树3. 某二叉树如图所示。则使用数组表示该二叉树的结果是( )( )( )4.现有一棵二叉树的中序遍历序列为b-e-c-f-a-d,后序遍历序列为c-f-c-b-d-a,则该二叉树的前序遍历序列是 ( )A.a-b-c-d-e-fB.b-d-a-e-f-cC.a-b-c-e-f-dD.a-b-c-f-e-d5.现有一棵二叉树的中序遍历序列为B-A-C-D-F-E, 后序遍历序列为A-B-F-E-D-C, 则该二叉树的前序遍历序列是 ( )A.C-B-A-F-E-D(D.C-B-A-D-E-F)B.C-B-A-D-F-EC.C-B-A-E-F-D6. 现有一棵二叉树的前序遍历序列为a-b-c-d-e-f-g-h-i-j-k,中序遍历 序列为c-d-b-e-f-a-g-h-i-j-k,则该二叉树的后序遍历序列是( )A.d-f-c-e-b-k-j-i-h-g-aB.c-d-f-e-b-k-j-i-g-h-aC.d-c-e-f-b-j-k-i-h-g-aD.d-c-f-e-b-k-j-i-h-g-a7. 下列关于二叉树节点的说法,不正确的是 ( ) A.具有12个节点的完全二叉树有5个度为2的节点B. 由3个节点所构成的二叉树有6种形态C.一棵深度为6的满二叉树有32个叶子节点D.一棵具有257个节点的完全二叉树,它的深度为98. 某公司的内部管理的组织关系如图所示。通过观察可知,该组织(形式是一种树形结构,下列说法正确的是总经理人事部门店2门店3A.该树中共有8个叶子节点售后部零售部运维部项目部技术部财务部业务部采购部()门店1)B.该树的度为4,高度为4C.“售后部”节点的父节点是“业务部”节点D.“项目部”节点是“零售部”节点的兄弟节点9 .如果一棵二叉树的中序遍历序列是B-A-C,那么它的前序遍历序列不可能是 ( )A.A-B-C B.C-B-AC.A-C-B D.B-A-C10. 将含100个节点的完全二叉树,按照从上层到下层,同层从左到右 的顺序依次给它们编以从0开始的连续自然数,则编号为40的节 点x的父节点的编号是 ( )A.19 B.20C.21 D.3911.某二叉树如图所示。用list表示该二叉树是 ( )A.[5,2,1,3,4]B.[5,[2,[1,None,None],None],[3,[4]]]C.[5,[2,[1]],[3,[4,None,None]]]D.[5,[2,[1,None,None]],[3,[4,None,None],None],None]12. 已知某二叉树如图所示,则其对应的一维数组(None 表示为空数 据)表示为 ( )A.bt-["A","B","C","D","E"]B.bt=["A","B","C",None,"D",None,None,None,"E"]C.bt=["A","B","C",None,"D",None,None,None,None,"E"]D.bt=["A","B","C",None,"D",None,None,None,None,None,"E"]13. 如图所示, 一个数学表达式可以用一棵表达式树来表示。下列关于该表达式树的描述,不正确的是 ( )A.该表达式树不是完全二叉树B.若表达式树中只有四则运算,则对应的表达式树的每个节点都有两个孩子节点C.表达式树的根节点左右子树的深度差不会超过1D.该表达式树对应的表达式为“(3+4)*6-8+4/(3*2)”14. 已知某二叉树可用嵌套列表表示为bt=["A",["B",["D",None,None],["E",None,Nonel],["C",None,["F",None,Nonell],下列说法正确的是 ( )A.该二叉树的前序遍历序列为A-B-C-D-E-FB.该二叉树的中序遍历序列为D-B-E-A-C-FC.该二叉树的后序遍历序列为B-F-C-D-E-AD.该二叉树的层序遍历序列为A-B-D-E-C-F15. 使用链表构建如图所示的二叉树。构建此二叉树的Python程序如下:class Node:#创建Node类def ini (self,value=None,left=None,right=None):self.value=valueSelf. . left=left #左子树Self .right=right #右子树if name ==" main ":root=则划线处应填入的代码是 ( )A.Node("A",Node("B",Node("D"),Node("E"),Node("C"))B.Node("A",Node("B",Node("D"),Node("E"),"C"))C.Node("A",Node("B",Node("C"),Node("D"),Node("E")D.Node("A",Node("B",Node("D"),Node("E"),Node("C"))16. 某Python程序如下:bt=["A","B","C","D","E",None,"F"]result=[]stack=[0]while stack:i=stack.pop()result.append(bt[i]))c=2*i+1if cstack.append(c)if c+1stack.append(c+1)print("-".join(result[::- 1])程序运行后,输出的结果为 ( )A.A-B-C-D-E-FB.D-B-E-F-C-AC.D-E-B-F-C-AD.A-B-D-E-C-F二、非选择题17. 已知一棵二叉树的中序遍历序列是D-B-G-E-A-F-H-C, 后序遍历 序列是D-G-E-B-H-F-C-A, 请画出这棵二叉树,并给出其前序遍历序列。18. 已知一批数据如下:48,17,65,19,67,18,73,72,43,85。依据这 10个数据按照“小左大右”的二叉排序树构建规则,构建一棵二叉 排序树。请回答下列问题:(1)画出该二叉树。(2)在该二叉排序树上搜索某个值的自定义函数search(root,x)如下,请在划线处填入合适的代码。def search(root.x):if root is None:return "找不到!"elif x==root.data:return"找到!"elif xprint("左",end="")else:print("右",end="")return search(root.right,x)19. 下列Python程序的功能是使用列表data 建立二叉树,并输出该二叉树的节点。请在划线处填入合适的代码。def create tree(tree,data):for i in range( ① ):depth=0if i==0:②else:while tree[depth]!=0:if data[i]>tree[depth]:③else:depth=depth*2+1tree[depth]=data[i]btree=[0]*20data=[20,30,15,18,7,25,22,13,35,12]create tree(btree,data)print("生成的二叉树数组为:")for iin range(len(btree)):print(btree[i],end="")参考答案C 2 .A 3.C 4.C 5.D 6.D 7.B 8.C 9.C 10.A11.D 12.C 13.C 14.B 15.A 16.C前序遍历序列是 A-B-D-E-G-C-F-H(1)return search(root.left,x)len(data) ② tree[depth]=data[i]③ depth=depth*2+2 展开更多...... 收起↑ 资源预览