树和二叉树作业(一)

合集下载

作业:第五章 树和二叉树

作业:第五章  树和二叉树

第五章树和二叉树一、单项选择题1.关于二叉树的下列说法正确的是 (1)。

A.二叉树的度为2 B.二叉树的度可以小于2C.每一个结点的度都为2 D.至少有一个结点的度为2.设深度为h(h>0)的二叉树中只有度为0和度为2的结点,则此二叉树中所含的结点总数至少为(2)。

A.2h B.2h-1 C.2h+1 D.h+13.在树中,若结点A有4个兄弟,而且B是A的双亲,则B的度为 (3) 。

A.3 B.4 C.5 D.64.若一棵完全二叉树中某结点无左孩子,则该结点一定是 (4) 。

A.度为1的结点 B.度为2的结点 C.分支结点 D.叶子结点5.深度为k的完全二叉树至多有 (5) 个结点,至少有 (6) 个结点。

A.2k-1-1 B.2k-1 C.2k-1 D.2k6.前序序列为ABC的不同二叉树有 (7) 种不同形态。

A.3 B.4 C.5 D.67.若二叉树的前序序列为DABCEFG,中序序列为BACDFGE,则其后序序列为 (8) ,层次序列为 (9) 。

A.BCAGFED B.DAEBCFG C.ABCDEFG D.BCAEFGD8.在具有200个结点的完全二叉树中,设根结点的层次编号为1,则层次编号为60的结点,其左孩子结点的层次编号为 (10) ,右孩子结点的层次编号为 (11) ,双亲结点的层次编号为 (12)。

A.30 B.60 C.120 D.1219.遍历一棵具有n个结点的二叉树,在前序序列、中序序列和后序序列中所有叶子结点的相对次序 (13) 。

A.都不相同 B.完全相同 C.前序和中序相同 D.中序与后序相同10.在由4棵树组成的森林中,第一、第二、第三和第四棵树组成的结点个数分别为30,10,20,5,当把森林转换成二叉树后,对应的二叉树中根结点的左子树中结点个数为(14),根结点的右子树中结点个数为 (15) 。

A.20 B.29 C.30 D.3511.具有n个结点(n>1)的二叉树的前序序列和后序序列正好相反,则该二叉树中除叶子结点外每个结点 (16) 。

数据结构树和二叉树习题

数据结构树和二叉树习题

数据结构树和二叉树习题一、树的基本概念1.请简要描述树的基本概念及其特点。

答:树是由n(n≥0)个节点组成的有限集合。

其中:-若n=0,则为空树。

-若n>0,则树有且仅有一个称为根的节点,其他节点可以分为多个互不相交的有限集合,每个集合本身又是一棵树,称之为根的子树。

树的特点包括:-每个节点存放的数据可以是同种或不同种的数据类型。

-每个节点最多有一个父节点和多个子节点。

2.请列举树的应用场景。

答:树的应用场景包括但不限于以下几个方面:-文件系统:操作系统中的文件系统通常使用树来组织文件和目录。

-数据库:数据库中的索引通常使用树来存储和组织数据。

-编译原理:编译器使用语法树来解析源代码。

-社交网络:社交网络中的关注和粉丝关系可以表示为树。

二、二叉树3.请定义二叉树。

答:二叉树是一种特殊的树结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。

4.请画出以下二叉树的结构图:A/\BC/\/\DEFG答:以下是该二叉树的结构图:A/\BC/\/\DEFG5.请写出以下二叉树的前序遍历、中序遍历和后序遍历结果:/\23/\45答:-前序遍历结果:1,2,4,5,3-中序遍历结果:4,2,5,1,3-后序遍历结果:4,5,2,3,1三、二叉树的操作6.请实现二叉树的插入操作。

答:以下是二叉树的插入操作的示例代码:```class Node:def __init__(self, value):self.value = valueself.left = Noneself.right = Nonedef insert(root, value):if root is None:root = Node(value)else:if value < root.value:if root.left is None:root.left = Node(value)else:insert(root.left, value)else:if root.right is None:root.right = Node(value)else:insert(root.right, value)```7.请实现二叉树的查找操作。

数据结构二叉树习题含答案

数据结构二叉树习题含答案

} ChangeLR(T->lchild); ChangeLR(T->rchild); } ( 4)设计二叉树的双序遍历算法(双序遍历是指对于二叉树的每一个结点来说,先访 问这个结点, 再按双序遍历它的左子树, 右子树)。 void DoubleTraverse(BiTree T) { if(T == NULL) return; else if(T->lchild==NULL&&T->rchild==NULL) cout<<T->data; else { cout<<T->data; DoubleTraverse(T->lchild); cout<<T->data; DoubleTraverse(T->rchild); } } ( 5)计算二叉树最大的宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大 值) 。 [ 题目分析 ] 求二叉树高度的算法见上题。求最大宽度可采用层次遍历的方法,记下各 层结点数,每层遍历完毕,若结点数大于原先最大宽度,则修改最大宽度。 int Width(BiTree bt)// { if (bt==null) else {BiTree Q[];//Q 结点在队列中的位置 temp=0; maxw=0; Q[rear]=bt; // while (front<=last) {p=Q[front++]; temp++; // 同层元素数加 1 左子女入队 右子女入队 if (p->lchild!=null) Q[++rear]=p->lchild; // if (p->rchild!=null) Q[++rear]=p->rchild; // if (front>last) {last=rear; if (temp>maxw) maxw=temp;//last temp=0; }// if return (maxw); }// while 指向下层最右元素 , 更新当前最大宽度 // 一层结束, //temp 记局部宽度 , maxw 记最大宽度 根结点入队列 是队列,元素为二叉树结点指针,容量足够大 队头指针 ,rear 队尾指针 ,last 同层最右 front=1;rear=1;last=1;//front 求二叉树 bt 的最大宽度 return (0); // 空二叉树宽度为 0 然后再一次访问这个结点, 接下来按双序遍历它的

第6章 树和二叉树 作业

第6章 树和二叉树 作业

第6章树和二叉树作业1、假设在树中,结点x是结点y的双亲时,用(x,y)来表示树边。

已知一棵树的树边集合为{ (e,i), (b,e), (b,d), (a,b), (g,j), (c,g), (c,f), (h,l), (c,h), (a,c) } ,用树型表示法表示该树,并回答下列问题:①哪个是根结点? 哪些是叶子结点? 哪个是g的双亲? 哪些是g的祖先? 哪些是g的孩子? 那些是e的子孙? 哪些是e的兄弟? 哪些是f 的兄弟?②b和n的层次各是多少? 树的深度是多少? 以结点c为根的子树的深度是多少?2、一棵深度为h的满k叉树有如下性质:第h层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。

如果按层次顺序(同层自左至右)从1开始对全部结点编号,问:①各层的结点数是多少?②编号为i的结点的双亲结点(若存在)的编号是多少?③编号为i的结点的第j个孩子结点(若存在)的编号是多少?④编号为i的结点的有右兄弟的条件是什么? 其右兄弟的编号是多少?3、设有如图6-27所示的二叉树。

①分别用顺序存储方法和链接存储方法画出该二叉树的存储结构。

②写出该二叉树的先序、中序、后序遍历序列。

4、已知一棵二叉树的先序遍历序列和中序遍历序列分别为ABDGHCEFI和GDHBAECIF,请画出这棵二叉树,然后给出该树的后序遍历序列。

5、设一棵二叉树的中序遍历序列和后序遍历序列分别为BDCEAFHG 和DECBHGFA ,请画出这棵二叉树,然后给出该树的先序序列。

6、已知一棵二叉树的中序遍历序列和后序遍历序列分别为dgbaekchif 和gdbkeihfca,请画出这棵二叉树对应的中序线索树和后序线索树。

7、以二叉链表为存储结构,请分别写出求二叉树的结点总数及叶子结点总数的算法。

8、设图6-27所示的二叉树是森林F所对应的二叉树,请画出森林F。

9、设有一棵树,如图6-28所示。

①请分别用双亲表示法、孩子表示法、孩子兄弟表示法给出该树的存储结构。

(山东科技大学)PTA数据结构答案与解析

(山东科技大学)PTA数据结构答案与解析

2.单选题
2-1* 如果一棵非空k(k≥2)叉树T中每个非叶子结点都有k个孩子,则称T为正则k叉树。若T的高度为h(单结点的树 h=1),则T的结点数最多为:(3分) 1. ( 2. ( 3. ( )/(k−1) )/(k−1) )/(k−1)
4. 以上都不是 解析:将k=2带入,套用二叉树的结点树结论,发现A为正确形式 答案: A 2-2* 如果一棵非空k(k≥2)叉树T中每个非叶子结点都有k个孩子,则称T为正则k叉树。若T的高度为h(单结点的树 h=1),则T的结点数最少为:(3分) 1. ( 2. ( )/(k−1)+1 )/(k−1)−1
3. 4. 解析:这道题我不知道怎么正确推导答案,不过这题可以举一个正确的二叉树的例子,带答案用排除法做 答案: D 2-3 要使一棵非空二叉树的先序序列与中序序列相同,其所有非叶结点须满足的条件是:(2分) 1. 只有左子树 2. 只有右子树 3. 结点的度均为1 4. 结点的度均为2 解析:略 答案: B 2-4 已知一棵二叉树的树形如下图所示,其后序序列为{ e , a , c , b , d , g , f }。树中与结分支数,n代表结点数,联立上边二式可得正确答案,故选C 答案: C 单位: 浙江大学 2-8 有一个四叉树,度2的结点数为2,度3的结点数为3,度4的结点数为4。问该树的叶结点个数是多少?(2分) 1. 10 2. 12 3. 20 4. 21 解析:根据题意随便画一种符合题意的图即可判断,也可以通过公式推导。
解析:知道中序遍历和先序遍历,是可以画出树来的。如果不是很会这种方法,反正只有三个节点,大可以画图举 例。可得没有树满足先序是ABC,中序是CAB的。 我们这样去分析:由先序遍历可得A是根节点;由中序遍历可得C是左孩子,B是右孩子,而先序遍历中B是左孩 子,C是右孩子,矛盾,所以不可能滴 答案: F

树和二叉树(习题及作业)

树和二叉树(习题及作业)

• 3下列各项叙述中,正确的是 。 • A) 二叉树中每个结点有两个子结点,而对 一般的树则无此限制 • B) 用树的前序遍历和中序遍历可以推导出 树的后续遍历 • C) 在二叉树中插入结点,该二叉树便不再 是二叉树 • D) 用一维数组存储二叉树,总是以前序遍 历顺序存储结点
• • • • •
第6章 树和二叉树
• 1.如果二叉树中任何一个结点的值都小于它 的左子树上所有结点的值,且大于右子树 上所有结点的值,要得到个结点值的递增 序列,应按下列 次序排列结点。 • A) 先根 • B) 中根 • C) 后根 • D) 层次
• 2.设森林F中有3棵树。第一、第二和第三棵 树的结点个数分别是m1,m2和m3,则与森 林F对应的二叉树根结点的右子树上的结点 个数是 。 • A) m3 • B) m2 + m3 • C) m1 •B) 孩子链表表示法 C) 孩子兄弟表示法 D) 顺序存储表示法
不是树的存储形式。
• 假设用于通信的电文由字符集{a,b,c,d,e,f,g} 中的字母构成。它们在电文中出现的频度 分别为{0.31,0.16,0.10,0.08,0.11,,0.20,0.04}, • 为这7个字母设计哈夫曼编码; • 计算其带权路径长度

树与二叉树1_习题与解答

树与二叉树1_习题与解答

1、括号的匹配(表达式的合法性检查)[问题描述]假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。

请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。

假设表达式长度小于255,左圆括号少于20个。

[问题分析]假设输入的字符串存储在c中(var c:string[255])。

我们可以定义一个栈:var s:array[1..maxn] of char;top:integer;用它来存放表达式中从左往右的左圆括号(maxn=20)。

算法的思路为:顺序(从左往右)扫描表达式的每个字符c[i],若是“(”,则让它进栈;若遇到的是“)”,则让栈顶元素出栈;当栈发生下溢或当表达式处理完毕而栈非空时,都表示不匹配,返回“NO”;否则表示匹配,返回“YES”。

[参考程序]program lx5;const maxn=20;var c:string;function judge(c:string):boolean;var s:array[1..maxn] of char;top,i:integer;ch:char;beginjudge:=true;top:=0;i:=1;ch:=c[i];while ch<>'@' dobeginif (ch='(') or (ch=')') thencase ch of'(' : begin top:=top+1;s[top]:='(' end;')' : if top>0 then top:=top-1else begin judge:=false;exit end;end;i:=i+1;ch:=c[i];end;if top<>0 then judge:=false;end;begin {main}assign(input,'match.in');assign(output,'match.out');reset(input);rewrite(output);readln(c);if judge(c) then writeln('YES') else writeln('NO');close(input);close(output);end.2、编程把中缀表达式转换成后缀表达式[问题描述]输入一个中缀表达式,编程输出其后缀表达式,要求输出的后缀表达式的运算次序与输入的中缀表达式的运算次序一致。

树和二叉树作业

树和二叉树作业
作业1
E
K
F
L
A 1 如图所示的二叉树
的(a)画出其顺序存储和二叉链表
存储。(b)列出该二叉树的叶子
B
结点,指出该二叉树的深度 (c)分别写出该二叉树的先序,中序,
后序遍历序列。
C
2 编写一个算法统计二叉树
中叶子结点的个数
G
D
3)已知一棵二叉树的前序遍历的 结果是ABECDFGHIJ, 中序遍历
H 的结果是EBCDAFHIGJ,
解: (1)空二叉树或任一结点均无左子树的非空二叉树 (2)空二叉树或任一结点均无右子树的非空二叉树
(3)空二叉树或仅有一个结点的二叉树 (4)空二叉树或仅有一个结点的二叉树
3 假定用于 通信的电 文仅由8个 字母c1, c2,
c3, c4, c5,
c6, c7, c8 组成, 各字母在 电文中出 现的频率 分别为5,
0
22 17
10
C2:25
1
C7:36
0
7
1
C5:10 0
11 C6:11
1
C3:3 C8:4 C1:5 C4:6
电文总码数: 0100 1000000101 001 011 11 0001
注意:电文总编码形式不唯一,只要带权路径总长度为257的最优 二叉树编码都是符合要求的.
>lchild)+CountLeaf2(bt->rchild)); }
A
3)重建二叉树 E
B C
F
G
H
J
Байду номын сангаасD I
作业:2
1)转化的二叉树 如图
NULL
1
3 2
4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

树作业(一)
【作业要求】
1.提交文档,写出答案
2.如果有需要绘图,可以手绘拍照节省时间
【题目说明】
1 单项选择题
1. 由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法_B_。

A. 正确
B. 错误
2. 假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为
B 个。

A.15 B.16C.17D.47
3. 按照二叉树的定义,具有3个结点的不同形状的二叉树有__C__种。

A. 3
B. 4
C. 5
D. 6
4. 按照二叉树的定义,具有3个不同数据结点的不同的二叉树有__C__种。

A. 5
B. 6
C. 30
D. 32
5. 深度为5的二叉树至多有__C__个结点。

A. 16
B. 32
C. 31
D. 10
6. 设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为_ _B__。

A. 2h
B. 2h-1
C. 2h+1
D. h+1
7. 对一个满二叉树,m个树叶,n个结点,深度为h,则__D__ 。

A. n=h+m
B. h+m=2n
C. m=h-1
D. n=2 h-1
8. 如图1所示的4棵二叉树,__C__不是完全二叉树。

(A) (B) (C) (D)
图1
9. 树最适合用来表示__C__。

A. 有序数据元素
B. 无序数据元素
C. 元素之间具有分支层次关系的数据
D. 元素之间无联系的数据
2 填空题
1. 举例说明树和二叉树的两个主要差别_树的节点的最大度数没有限制,但是二叉树的节点的最大度数为2___、__树中节点的子节点没有顺序之分,但是二叉树中节点的子节点分左孩子、右孩子__。

2. 一棵二叉树的结点数据采用顺序存储结构,存储于数组t中,如下图所示,请画出该二叉树的形态。

123456789101112131415161718192021
e a
f d
g c j l
h b
一棵二叉树的顺序存储数组t
3. 深度为k的完全二叉树至少有__2k−1__个结点。

至多有__2k−1__个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是__2k−2+1__。

4、已知一棵完全二叉树的第6层(设根是第1层)有8个叶结点,则该完全二叉树的结点个数最多是多少?
第6层只有8个节点,说明第6层不满,一定是深度最大的那层。

前5层一共有25−1=31个节点,所以共有39个节点。

5、已知一棵有2011个结点的树,其叶结点个数为116,该树对应的二叉树无右孩子的结点个数为多少?
在树中,没有兄弟结点的结点转化到二叉树中才没有右孩子,而这类结点只可能是每个结点的子结点中最右的那个(自然也包括叶子结点),或者根结点,其中第一项就是分支数,第二项恒为1。

所以答案为总结点数-叶子结点数+根结点数=1896。

3 简答题
1. 已知一棵树如图2所示,请转化为一棵二叉树。

2. 一棵含有N 个结点的k 叉树,可能达到的最大深度和最小深度各为多少?
达到最大深度时,该树每一层只有一个结点,故最大深度为N 。

达到最小深度时,该树应尽可能“满”,最小深度为⌈log k (N +1)⌉
3. 画出下图所示的各二叉树所对应的森林。

g
c e f
d
b a
图2 一棵树
(a)
(b)
(c)
(d)
(e)。

相关文档
最新文档