树与二叉树练习题
树和二叉树-练习题

A. n1+n2+n3
B. n2+n3
C. n1+n2
D. n1+n3
2021/4/9
2
7.如果在树的孩子兄弟链存储结构中有6个空的左指针域, 7个空的右指针域,则该树中树叶的个数为( )
A.7个 B.6个 C.13个 D.不能确定
8.如果T1是由树T转换而来的二叉树,那么T中结点的后 根序列就是T1中结点的( ) 序列
A
B
C
D EH F
G
先序遍历序列:ABDEGCHF
2021/4/9
5
2.画出下列存储结构对应的二叉树,并将其转换成对应的 森林。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ABD 0 CEH0 0 0 0 FG I
A
BDCE源自HFG IA
D
H
BC EG I
F
2021/4/9
6
3.画出以{1, 8, 2, 10, 12, 4,11}为权值的哈夫曼树(权值
5.已知二叉树的先序遍历序列为ADBECF,中序遍历序列 为 BDEACF , 则 这 棵 二 叉 树 的 后 序 遍 历 序 列 为 ( BEDFCA ) ,该树对应的森林包括( 3 )棵树。
2021/4/9
4
1.已知一棵二叉树的后序遍历序列为DGEBHFCA,中序 遍历序列为DBEGAHCF,画出该二叉树,并写出二叉 树的先序遍历序列。
大的为右子树),并求出该哈夫曼树的带权路径长度
WPL。
48
21
27
10 11
12 15
7
8
3
4
1
2
WPL=(1+2)*5+4*4+8*3+(10+11+12)*2
数据结构树和二叉树习题

数据结构树和二叉树习题一、树的基本概念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.请实现二叉树的查找操作。
树和二叉树(习题及作业)

• 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个字母设计哈夫曼编码; • 计算其带权路径长度
习题5 树和二叉树

习题5 树和二叉树一、选择题:1.在具有n个结点的完全二叉树中,结点i(i>1)的父结点是()A.2i B.不存在C.2i+1 D.⌊ i/2⌋2. 有m个叶结点的哈夫曼树所具有的结点数为()A.m B.m+1 C.2m D.2m - 13. 下列陈述中正确的()A.二叉树是度为2的有序树B.二叉树中结点只有一个孩子时无左右之分C.二叉树中必有度为2的结点D.二叉树中最多只有两棵子树,并且有左右之分4. 以二叉链表作为二叉树的存储结构,在具有n个结点的二叉链表中(n>0),空链域的个数为()A.2n - 1 B.n - 1 C.n + 1 D.2n + 15. 将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为()A.99 B.98 C.50 D.486. 在一棵具有五层的满二叉树中,结点总数为()A.31 B.32 C.33 D.167. 在一棵二叉树中,第5层上的结点数最多为()A.8 B.15 C.16 D.328. 由二叉树的()遍历,可以惟一确定一棵二叉树A.前序和后序B.前序和中序C.后序D.中序9. 具有35个结点的完全二叉树的深度为()。
A.5B.6C.7D.810. 已知一棵二叉树的先序遍历序列为EFHIGJK,中序遍历序列为HFIEJGK,则该二叉树根的右子树的根是()。
A.E B. F C. G D. J11. 由4个结点构造出的不同的二叉树个数共有()。
A.8 B. 10 C.12 D.1412. 在完全二叉树中,如果一个结点是叶子结点,则它没有()。
A.左孩子结点B. 右孩子结点C.左、右孩子结点D.左、右孩子结点和兄弟结点13. 深度为6的二叉树最多有()个结点。
A.64 B.63 C.32 D.3114. 二叉树使用二叉链表存储,若p指针指向二叉树的一个结点,当p->lchild=NULL时,则()。
树和二叉树习题及答案

树和二叉树习题及答案一、填空题1、不相交的树的聚集称之为森林。
2、从概念上讲,树与二叉树就是两种不同的数据结构,将树转化为二叉树的基本目的就是_树可采用孩子-兄弟链表(二叉链表)做存储结构,目的就是利用二叉树的已有算法解决树的有关问题。
3、深度为k的完全二叉树至少有2 k-1个结点。
至多有2 k-1个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号就是2 k-2+1。
4、在一棵二叉树中,度为零的结点的个数为n,度为2的结点的个数为n2,则有n= n2+1。
5、一棵二叉树的第i(i≥1)层最多有 2 i-1个结点;一棵有n(n>0)个结点的满二叉树共有(n+1)/2个叶子与(n-1) /2个非终端结点。
6.现有按中序遍历二叉树的结果为abc,问有5种不同形态的二叉树可以得到这一遍历结果。
7、哈夫曼树就是带权路径最小的二叉树。
8、前缀编码就是指任一个字符的编码都不就是另一个字符编码的前缀的一种编码方法,就是设计不等长编码的前提。
9、以给定的数据集合{4,5,6,7,10,12,18}为结点权值构造的Huffman树的加权路径长度就是 165 。
10、树被定义为连通而不具有回路的(无向)图。
11、若一棵根树的每个结点最多只有两个孩子,且孩子又有左、右之分,次序不能颠倒,则称此根树为二叉树。
12、高度为k,且有个结点的二叉树称为二叉树。
2k-1 满13、带权路径长度最小的二叉树称为最优二叉树,它又被称为树。
Huffman14、在一棵根树中,树根就是为零的结点,而为零的结点就是结点。
入度出度树叶15、Huffman树中,结点的带权路径长度就是指由到之间的路径长度与结点权值的乘积。
结点树根16、满二叉树就是指高度为k,且有个结点的二叉树。
二叉树的每一层i上,最多有个结点。
2k-1 2i-1二、单选题1、具有10个叶结点的二叉树中有 (B) 个度为2的结点。
(A)8 (B)9 (C)10 (D)112. 对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用_(3)次序的遍历实现编号。
树和二叉树习题

1.若在一棵非空树中,某结点A有3个兄弟结点(包括A自身),B是A的双亲结点,则B的度是()。
A. 2B. 3C. 4D. 52.有关二叉树下列说法正确的是()A.二叉树的度为2B.一棵二叉树的度可以小于2C.二叉树中至少有一个结点的度为2D.二叉树中任何一个结点的度都为23.将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子的编号为()。
A.98B.99C.50D.484.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点至少为()。
A.hB.2h-1C.2h+1D.h+15.假定在一棵二叉树中,双分支结点数为15个,单分支结点数为32个,则叶子结点数为。
A. 15B. 16C. 17D. 476.假定一棵二叉树的结点数为18个,则它的最小高度。
A. 4B. 5C. 6D. 187.在一棵二叉树中第五层上的结点数最多为。
A. 8B. 15C. 16D. 328.在一棵具有五层的满二叉树中,结点总数为。
A. 31B. 32C. 33D. 169.一个有31个结点的满二叉树,其深度有()。
A.5层B. 6层C. 7层D.8层10.一个具有767个结点的完全二叉树,其叶子结点个数为()。
A. 383B. 384C. 385D. 38611.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 。
则T中的叶子数为()。
A.5 B.6 C.7 D.812.某二叉树中序序列为abcdefg,后序序列为bdcafge,则前序序列是()。
A. egfacdbB. eacbdgfC. eagcfbdD.上面的都不对13.设A、B为一棵二叉树上的两个结点。
在中序遍历时,A在B前面的条件是()。
A. A在B的右方B. A在B的左方C. A是B的祖先D. A是B的子孙14.在N个结点的线索二叉树中,线索的数目为()A.N-1B.NC.N+1D.2N15.引入二叉线索树的目的是()A.加快查找结点的前驱或后继的速度B.为了能在二叉树中方便的进行插入与删除C.为了能方便的找到双亲D.使二叉树的遍历结果惟一16.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是()A.m-n B.m-n-1 C.n+1 D.条件不足,无法确定17.在有n个叶子结点的哈夫曼树中,其分支结点(非叶子结点)的总数为( )。
数据结构树和二叉树习题(有答案)

E F D GAB/+ +* - C* 第六章树和二叉树一、选择题1.已知一算术表达式的中缀形式为 A+B*C-D/E ,后缀形式为ABC*+DE/-,其前缀形式为( )A .-A+B*C/DE B. -A+B*CD/E C .-+*ABC/DED. -+A*BC/DE【北京航空航天大学 1999 一、3 (2分)】2.算术表达式a+b*(c+d/e )转为后缀表达式后为()【中山大学 1999 一、5】A .ab+cde/*B .abcde/+*+C .abcde/*++ D.abcde*/++3. 设有一表示算术表达式的二叉树(见下图),它所表示的算术表达式是()【南京理工大学1999 一、20(2分)】A. A*B+C/(D*E)+(F-G)B. (A*B+C)/(D*E)+(F-G)C. (A*B+C)/(D*E+(F-G ))D. A*B+C/D*E+F-G4. 设树T 的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T 中的叶子数为()A .5 B.6 C.7D .8【南京理工大学 2000 一、8 (1.5分)】5. 在下述结论中,正确的是()【南京理工大学 1999 一、4 (1分)】①只有一个结点的二叉树的度为0; ②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K 的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A .①②③ B .②③④ C.②④D .①④6. 设森林F 对应的二叉树为B ,它有m 个结点,B 的根为p,p 的右子树结点个数为n,森林F中第一棵树的结点个数是()A .m-nB .m-n-1C .n+1D .条件不足,无法确定【南京理工大学2000 一、17(1.5分)】7. 树是结点的有限集合,它((1))根结点,记为T 。
其余结点分成为m (m>0)个((2))的集合T1,T2,…,Tm ,每个集合又都是树,此时结点T 称为Ti 的父结点,Ti 称为T 的子结点(1≤i ≤m )。
数据结构(树与二叉树)习题与答案

一、单选题1、已知一算术表达式的中缀形式为 A-B/C+D*E,前缀形式为+-A/BC*DE,其后缀形式为( )。
A.ABC/-DE*+B.AB/C-D*E+C. A-BC/DE*+D. ABCDE/-*+正确答案:A2、有关二叉树下列说法正确的是()。
A.二叉树中任何一个结点的度都为2B.一棵二叉树的度可以小于2C.二叉树中每个结点的度都为2D.二叉树中至少有一个结点的度为2正确答案:B3、在一棵高度为k的满二叉树中,结点总数为()。
A.2k-1B. 2k-1C. 2k-1+1D.2k正确答案:B4、某二叉树中有60个叶子结点,则该二叉树中度为2的结点个数为()。
A.不确定B.60C.59D.61正确答案:C解析:任意二叉树中,n0=n2+15、高度为7的完全二叉树,最少有()个结点。
A.127B.128C.63D.64正确答案:D解析:前6层都是满的,最后一层(第7层)近1个结点。
可保证题目条件。
6、高度为7的二叉树,最少有()个结点。
A.7B.127C.13D.64正确答案:A解析:每层只有1个结点。
共7个即可构成一个高度为7的二叉树。
7、对任意一棵有n个结点的树,这n个结点的度之和为( )。
A.n-1B.2*nC.n+2D.n正确答案:A解析:所有结点的度之和为分支个数,分支个数即为结点个数-18、在下列存储形式中,()不是树的存储形式。
A.双亲表示法B.孩子-兄弟表示法C.孩子链表表示法D.顺序存储表示法正确答案:D9、对二叉树中的结点进行编号,要求根结点的编号最小,左孩子结点编号比右孩子结点编号小。
则应该采用()遍历方法对其进行编号。
A.层次B.先序C.后序D.中序正确答案:B10、某二叉树中有60个叶子结点,则该二叉树中度为2的结点个数为()。
A. 59B.61C.60D.不一定正确答案:A11、树的后根遍历,相当于对应二叉树的()遍历。
A.中序B.后序C.层次D.先序正确答案:A二、判断题1、完全二叉树一定存在度为1的结点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
树与二叉树练习题(五)
习题2010-05-25 17:27:01 阅读134 评论0 字号:大中小订阅
1. 己知二叉树采用二叉链表方式存放,要求返回二叉树T的后序序列中的第一个结点的指针,是否可以不用递归且不用栈来完成?请说明原因。
2.具有n个结点的满二叉树的叶子结点的个数是多少?说明理由。
3.列出先序遍历能得到ABC序列的所有不同的二又树。
4.画出同时满足下列两个条件的两棵不同的二叉树:
(1) 按先序遍历二叉树顺序为ABCDE;
(2) 高度为5,其对应的树(森林)的高度最大为4。
5.对于表达式(a-b+c)*d/(e+f)
(1) 画出它的中序二叉树,并标出该二叉树的前序线索;
(2) 给出它的前缀表达式和后缀表达式。
6.试找出分别满足下列条件的所有二叉树:
(1) 先序序列和中序序列相同;
(2) 中序序列和后序序列相同;
(3) 先序序列和后序序列相同。
7. 阅读下列算法的描述,根据算法的要求,在相应的空格处写出正确合理的语句。
后序遍历二叉树的非递归算法,bt是二叉树的根,S是一个栈,MaxSize是栈的最大容量。
typedef struct Node{
BTNode *[MaxSize+1];
int top;
} stacktyp;
void PostOrder(BTNode *bt)
{
BTNode *p, *q = bt;
stacktyp S;
int flag;
S.top = -1;
do{
while(q != NULL){
S.top++;
if(S.top > MaxSize){
printf("Stack Full!");
exit(0);
}
else
S.data[S.top] = q;
_______①_____;
}
flag = 1;
p = NULL;
while(S.top != -1 && flag){
q = S.data[S.top];
if(_________②__________){
printf(q->data);
S.to--;
p = q;
}
else {
_________③__________;
flag = 0;
}
}
}while(__________④__________);
}
8. 具有n个结点的完全二又树,已经顺序存储在一维数组A[n]中,下面算法是将A中顺序存储变成二叉链表存储的完全二又树。
请在空缺处填入适当语句,以完成上述算法。
Elemtype A[n];
void CreatTree(BTNode *T, int i)
{
_________①_________;
T->data = A[i];
if(________②________)
CreatTree(_______③________);
else
r->lchild = NULL;
if(_________④_________)
CreatTree(_______⑤________);
else
r->rchild = NULL;
}
void BTree(ar a, BTNOde *p)
{
int j;
j = ________⑥__________;
CreatTree(p, j);
}
9. 二叉树采用二叉链表存储结构,试设计算法计算一棵给定二叉树的各结点的子孙个数。
10. 一棵具有n个结点的完全二叉树,以一维数组作为存储结构,试设计一个对该完全二叉树进行前序遍历的算法。
11. 已知一棵二叉树的前序遍历序列和中序遍历序列,编写算法建立对应的二叉树。
12. 编写一个算法,利用叶子结点中的空指针域,将所有叶子结点链接为一个带有头结点的单链表,算法返回头结点的地址。
字符串练习题(四)
习题2010-04-26 17:20:23 阅读138 评论0 字号:大中小订阅
1. 设s=‘I_AM_A_TEACHER’,其长度是_________________。
2.空串是______________,其长度等于________________。
3.设sl=‘GOOD’,s2=‘☆’,s3=‘BYE!’,则sl、s2和s3连接后的结果是________。
4.两个串相等的充分必要条件是___________________。
5.简述一个字符串中子串的构成。
★6. 设目标为s=’abcaabbabcabaacbacba’,模式p=’abcabaa’。
(1) 计算模式p的nextval函数值;
(2) 不写出算法,只画出利用KMP算法(采用next函数值)进行模式匹配时每一趟的匹配过程。
★7. 模式匹配算法是在主串中快速寻找模式的一种有效的方法。
如果设主串的长度为m,模式的长度为n,则在主串中寻找模式的KMP算法的时间复杂性是多少?如果某一模式p=’abcaacabaca’,请给出它的next 函数值及next函数的修正值nextval之值。
【说明】
第6题、第7题可以不做。
栈与队列练习题(三)
习题2010-04-25 17:19:42 阅读216 评论0 字号:大中小订阅
1.循环队列的优点是什么?如何判别它的空和满?
2.内存中一片连续空间(不妨假设地址从0到m-1)提供给两个栈S1与S2使用,怎样分配这部分存储空间,使得对任一个栈仅当这部分空间全满时才发生上溢。
3.利用两个栈Sl和S2模拟一个队列(如客户队列)时,如何用栈的运算实现队列的插入、删除运算。
请简述算法思想。
4.在栈顶指针为head的链栈中,编写计算该链栈中结点个数的算法。
5.编写算法计算链队列Q中结点的个数。
6.假设以带头结点的循环单链表表示队列,并且只设一个指针rear指向队尾结点,但不设头指针,请写出相应的入队列和出队列算法。
7. 假设以I和O分别表示入栈和出栈操作,栈的初态和终栈均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列。
(1) 下面所示的序列中哪些是合法的?
A.IOIIOIOO B.IOOIOIIO C.IIIOIOIO D.IIIOOIOO
(2) 通过对(1)的分析,写出一个算法:判定所给的操作序列是否合法,若合法返回l;否则返回0。
(假设被判定的操作序列已存入一维数组中)。
8. 设有两个栈S1,S2都采用顺序栈方式,并且共享一个存储区[0..MAXSIZE-1],为了尽量利用空间,减少溢出可能,可采用栈顶相向、迎面增长的存储方式,试设计Sl,S2有关入栈和出栈的操作算法。
#define MAXSIZE 100
typedef struct Sq_DoubleStack{
Elemtype data[MAXSIZE];
int top1, top2;
} Stack;
int Sq_DoublePush(Stack &S, Elemtype x, int flag)
{// 如果flag=1,将元素x压到栈S1中,如果flag=2,将元素x压到栈S2中
...
}
int Sq_DoublePop(Stack &S, Elemtype &x, int flag)
{// 如果flag=1,弹出栈S1中的元素,如果flag=2,弹出栈S2中的元素
...
}。