已知二叉树的中序和先序序列,求后序序列

合集下载

数据结构期末考试及答案

数据结构期末考试及答案

一、单选题1、逻辑上通常可以将数据结构分为( )A.初等结构和组合结构B.顺序结构和链式结构C.线性结构和非线性结构D.动态结构和静态结构正确答案:C2、如果在数据结构中每个数据元素只可能有一个直接前驱,但可以有多个直接后继,则该结构是()。

A.栈B. 队列C.图D.树正确答案:D3、在长度为n的顺序表的第i个位置上插入一个元素(1<=i<=n+1),元素的移动次数为:()A.n-iB.i-1C.n-i+1D.i正确答案:C4、在非空线性链表中由p所指结点的后面插入一个由q所指的结点,应依次执行()A.q->next=p;p->next=q;B.p->next=q;q->next=p;C.q->next=p->next;p->next=q;D.q->next=p->next;p=q;正确答案:C5、已知栈的最大容量为4。

若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为()A.2,3,5,6,1,4B.1,4,6,5,2,3C.5,4,3,2,1,6D.3,2,5,4,1,6正确答案:D6、设栈S和队列Q初始均为空,若6个元素入栈的顺序为1、2、3、4、5、6,一个元素出栈以后立即入队列Q,若6个元素出队的顺序为2、4、3、6、5、1,则栈S的容量至少为()A.3B.5C.4D.2正确答案:A7、在计算机内实现递归算法时所需的辅助数据结构是()A.队列B.栈C.图D.树正确答案:B8、循环队列存储在数组A[0..m-1],则出队时的操作为()A.front=(front mod m)+1B.ront=(front+1)mod mC.front=front+1D.front=(front+1)mod (m-1)正确答案:B9、若以S和X分别表示进栈和退栈操作,则对初始状态为空的栈可以进行的栈操作系列合法的是()A.SXXSXSSXB.SSSXXSXXC.SXSSXXXXD.SXSXXSSX正确答案:B10、在具有m个单元的循环队列中,队头指针为front,队尾指针为rear,则队满的条件是()A.(front+1)%m==rearB.(rear+1)%m==frontC.front==rearD.rear+1==front正确答案:B11、在表长为n的顺序表上做插入运算,平均要移动的结点数为()A.n/4B.nC.n/3D.n/2正确答案:D12、元素的进栈次序为A,B,C,D,E,则退栈中不可能的序列是()A.E,D,C,B,AB.A,B,C,D,EC.E,A,B,C,DD.B,C,D,E,A正确答案:C13、下述二叉树中,()满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序。

信息学模拟试卷一

信息学模拟试卷一

模拟试卷一一、单项选择题1.若某链表中最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用存储方式最节省运算时间。

(1)单链表 (2)双链表(3)单循环链表 (4)带头结点的双循环链表2.设一个栈的输入序列为A,B,C.,D,则借助一个栈所得到的输出序列不可能是(1)A,B,C,D (2)D,C,B,A (3)A,C,D,B (4)D,A,B,C3.串是。

(1)不少于一个字母的序列 (2)任意个字母的序列(3)不少于一个字符的序列 (4)有限个字符的序列4.链表不具有的特点是。

(1)可随机访问任一元素 (2)插入删除不需要移动元素(3)不必事先估计存储空间 (4)所需空间与线性表长度成正比5.在有n个叶子结点的哈夫曼树中,其结点总数为。

(1)不确定 (2)2n (3)2n+1 (4)2n-16.任何一个无向连通图的最小生成树(1)只有一棵 (2)有一棵或多棵 (3)一定有多棵 (4)可能不存在7.将一棵有100个结点的完全二叉树从根这一层开始,每一层上从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为。

(1)98 (2)99 (3)50 (4)488.下列序列中,是执行第一趟快速排序后得到的序列(排序的关键字类型是字符串)。

(1)[da,ax,eb,de,bb]ff[ha,gc] (2)[cd,eb,ax,da]ff[ha,gc,bb] (3)[gc,ax,eb,cd,bb]ff[da,ha] (4)[ax,bb,cd,da]ff[eb,gc,ha] 9.用n个键值构造一棵二叉排序树,最低高度为。

(1)n/2 (2)n (3)[log2n] (4)[log2n+1]10.二分查找法要求查找表中各元素的键值必须是排列。

(1)递增或递减 (2)递增 (3)递减 (4)无序11.对于键值序列(12,13,11,18,60,15,7,18,25,100),用筛选法建堆,必须从键值为的结点开始。

已知一棵二叉树的前序序列为bacdeghf,中序序列为cadbhgef,则后序序列为

已知一棵二叉树的前序序列为bacdeghf,中序序列为cadbhgef,则后序序列为

已知一棵二叉树的前序序列为bacdeghf,中序序列为cadbhgef,则后序序列为根据二叉树的前序序列bacdeghf和中序序列cadbhgef,可以确定该二叉树的结构。

二叉树是一种特殊的树,它只有左右两个子树,每个节点最多只有两个子节点。

二叉树的前序序列,可以从根节点开始,按照从上到下,从左到右的顺序依次访问每个节点,以根节点b开头的前序序列bacdeghf中,b为根节点,a和c为b的左右子节点,d为a的左子节点,e为a的右子节点,g为c的左子节点,h为c的右子节点。

二叉树的中序序列,可以从左到右依次访问每个节点,从根节点开始,先遍历左子树,再遍历右子树,以根节点b开头的中序序列cadbhgef中,c为b的左子节点,a为c的左子节点,d为a的左子节点,b为d的右子节点,h为b的右子节点,g为h的左子节点,e为g的右子节点。

根据前序序列和中序序列,可以绘制出该二叉树的结构。

其根节点为b,左子节点为c,右子节点为e,c的左子节点为a,a的左子节点为d,d的右子节点为b,e的左子节点为g,g的右子节点为h。

由此可知,该二叉树的后序序列为cdebhgfe,从右向左,从下到上的顺序依次访问每个节点,以根节点b结尾。

由前序序列和中序序列可以直接确定二叉树的结构,而后序序列可以帮助我们更好地理解二叉树的结构。

在许多算法中,后序序列的结构也是非常重要的。

二叉树的前序序列、中序序列和后序序列都是树的一种遍历方式,它们都可以用来确定一棵树的结构,而且这三种遍历方式之间互相转换也是非常方便的。

在计算机科学中,二叉树是一种重要的数据结构,它在图形处理、数据检索等方面有着广泛的应用。

本文综上所述,已知一棵二叉树的前序序列为bacdeghf,中序序列为cadbhgef,根据二叉树的前序序列和中序序列,可以确定该二叉树的结构,其后序序列为cdebhgfe。

二叉树的前序序列、中序序列和后序序列都是树的一种遍历方式,它们都可以用来确定一棵树的结构,而且这三种遍历方式之间互相转换也是非常方便的。

树结构

树结构

第3章树结构3.2 习题3.2.1 填空题3-1已知(L,N),(G,K),(G,L),(G,M),(B,E),(B,F),(D,G),(D,H),(D,I),(D,J),(A,B),(A,C),(A,D)是表示一棵树中具有父子关系的边,那么:(1)树的根、叶、非叶结点分别是__________。

(2)树的高度为______________。

(3)各个结点的度数分别是_____________。

(4)各个结点的层数分别是_____________。

(5)结点G的父亲、真祖先、儿子、真子孙、兄弟分别是__________。

3-2含3个结点的普通树的树形共有(1)____种,其树形分别为(2)__________。

3-3含3个结点的二叉树的树形共有(1)____种,其树形分别为(2)___________;其中有(3)____个是完全二叉树。

3-4图3-1中:二叉树1的先序、中序、后序序列分别为:(1)_____________。

二叉树2的先序、中序、后序序列分别为:(2)_____________。

图3-13-5任何二叉树的叶结点在先序、中序和后序序列中的相对次序_____。

3-6由二叉树的先序序列和中序序列,求后序序列:先序序列ABDGCEF,中序序列DGBAECF,后序序列是(1)___________。

先序序列ABEFGCD,中序序列BFEGADC,后序序列是(2)___________。

3-7由二叉树的后序序列和中序序列,求先序序列:后序序列DBKHFEGCA,中序序列DBAKHEFCG,先序序列是(1)__________。

后序序列HGFBEDCA,中序序列HFGBAECD,先序序列是(2)__________。

3-8由正则二叉树的先序序列和后序序列,求中序序列:先序序列ABCDE,后序序列BDECA,中序序列是(1)__________。

先序序列ABCDFGHKE,后序序列BFHKGDECA,中序序列是(2)__________。

数据结构二叉树先序中序后序考研题目

数据结构二叉树先序中序后序考研题目

数据结构二叉树先序中序后序考研题目
以下是一些关于二叉树先序、中序和后序遍历的考研题目:
1. 已知二叉树的先序遍历序列为 "A B D E C F",中序遍历序列为 "D B E A F C",请画出该二叉树。

2. 已知二叉树的中序遍历序列为 "D B E A F C",后序遍历序列为 "D E B F C A",请画出该二叉树。

3. 给定一棵二叉树的先序遍历序列为 "A B D E F C",中序遍历序列为 "D B E F A C",请写出该二叉树的后序遍历序列。

4. 请写出一棵二叉树的先序遍历序列为 "A B D E C F",中序遍历序列为 "D B E A F C",后序遍历序列为 "D E B F C A" 的二叉树。

5. 已知一棵二叉树的中序遍历序列为 "D B E A F C",后序遍历序列为 "D E B F C A",请写出该二叉树的先序遍历序列。

6. 给定一棵二叉树的先序遍历序列为 "A B D E F C",后序遍历序列为 "D E F B C A",请写出该二叉树的中序遍历序列。

以上题目可以帮助你练习理解二叉树的遍历方式及其序列之间的关系。

二叉树的遍历题目及答案

二叉树的遍历题目及答案

二叉树的遍历题目及答案1. 二叉树的基本组成部分是:根(N)、左子树(L)和右子树(R)。

因而二叉树的遍历次序有六种。

最常用的是三种:前序法(即按N L R次序),后序法(即按L R N 次序)和中序法(也称对称序法,即按L N R次序)。

这三种方法相互之间有关联。

若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则它的后序序列必是 F E G H D C B 。

解:法1:先由已知条件画图,再后序遍历得到结果;法2:不画图也能快速得出后序序列,只要找到根的位置特征。

由前序先确定root,由中序先确定左子树。

例如,前序遍历BEFCGDH中,根结点在最前面,是B;则后序遍历中B一定在最后面。

法3:递归计算。

如B在前序序列中第一,中序中在中间(可知左右子树上有哪些元素),则在后序中必为最后。

如法对B的左右子树同样处理,则问题得解。

2.给定二叉树的两种遍历序列,分别是:前序遍历序列:D,A,C,E,B,H,F,G,I;中序遍历序列:D,C,B,E,H,A,G,I,F,试画出二叉树B,并简述由任意二叉树B的前序遍历序列和中序遍历序列求二叉树B的思想方法。

解:方法是:由前序先确定root,由中序可确定root的左、右子树。

然后由其左子树的元素集合和右子树的集合对应前序遍历序列中的元素集合,可继续确定root的左右孩子。

将他们分别作为新的root,不断递归,则所有元素都将被唯一确定,问题得解。

3、当一棵二叉树的前序序列和中序序列分别是HGEDBFCA和EGBDHFAC时,其后序序列必是A. BDEAGFHCB. EBDGACFHC. HGFEDCBAD. HFGDEABC答案:B4. 已知一棵二叉树的前序遍历为ABDECF,中序遍历为DBEAFC,则对该树进行后序遍历得到的序列为______。

A.DEBAFCB.DEFBCAC.DEBCFAD.DEBFCA[解析] 由二叉树前序遍历序列和中序遍历序列可以唯一确定一棵二叉树。

《数据结构》习题汇编06第六章树和二叉树试题

《数据结构》习题汇编06第六章树和二叉树试题

第六章树和二叉树试题一、单项选择题1.树中所有结点的度等于所有结点数加()。

A. 0B. 1C. -1D. 22.在一棵树中,()没有前驱结点。

A. 分支结点B. 叶结点C. 根结点D. 空结点3.在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加()。

A. 2B. 1C. 0D. -14.在一棵具有n个结点的二叉树中,所有结点的空子树个数等于()。

A. nB. n-1C. n+1D. 2*n5.在一棵具有n个结点的二叉树的第i层上(假定根结点为第0层,i大于等于0而小于等于树的高度),最多具有()个结点。

A. 2iB. 2i+1C. 2i-1D. 2n6.在一棵高度为h(假定根结点的层号为0)的完全二叉树中,所含结点个数不小于()。

A. 2h-1B. 2h+1C. 2h-1D. 2h7.在一棵具有35个结点的完全二叉树中,该树的高度为()。

假定空树的高度为-1。

A. 5B. 6C. 7D. 88.在一棵具有n个结点的完全二叉树中,分支结点的最大编号为()。

假定树根结点的编号为0。

A. ⎣(n-1)/2⎦B. ⎣n/2⎦C. ⎡n/2⎤D. ⎣n/2⎦ -19.在一棵完全二叉树中,若编号为i的结点存在左孩子,则左子女结点的编号为()。

假定根结点的编号为0A. 2iB. 2i-1C. 2i+1D. 2i+210.在一棵完全二叉树中,假定根结点的编号为0,则对于编号为i(i>0)的结点,其双亲结点的编号为()。

A. ⎣(i+1)/2⎦B. ⎣(i-1)/2⎦C. ⎣i/2⎦D. ⎣i/2⎦-111.在一棵树的左子女-右兄弟表示法中,一个结点的右孩子是该结点的()结点。

A. 兄弟B. 子女C. 祖先D. 子12.在一棵树的静态双亲表示中,每个存储结点包含()个域。

A. 1B. 2C. 3D. 413.已知一棵二叉树的广义表表示为a (b (c), d (e ( , g (h) ), f ) ),则该二叉树的高度为()。

数据结构试卷

数据结构试卷

考试答案不得超过此线一、选择题(每小题2分,共20分)1、与线性表的顺序存储不相符的特性是()。

A.不便于插入和删除B.必须连续的存储空间C.需另外开辟空间保存元素间的关系D.存储容量固定2、下列时间复杂度最好的是( )。

A、O)(log2n B、O)(2nC、O)(n D、O)log(2nn3、在链表中最常用的操作是删除表中最后一个结点和在最后一个结点之后插入元素,则采用()最节省时间。

A、带头指针的单向循环链表B、带头指针的双向循环链表C、带尾指针的单向循环链表D、双向链表4、设一个栈的输入序列为1、2、3、4,则借助一个栈所得到的输出序列不可能的是()A、1,2,3,4B、4,3,2,1C、1,3,4,2D、4,1,2,35、一棵左右子树均不空的二叉树在中序线索化后,空的指针域的个数是( )。

A、0B、1C、2D、不确定6、10个顶点的连通图的深度优先生成树的边数为()。

A、11B、10C、9D、无法确定7、12个结点的平衡二叉树的最大深度为( )。

A、4B、5C、6D、78、设有一个长度为100的已排好序的表,用二分查找进行查找,若查找不成功,至少比较()次。

A、9B、8C、7D、69、一组记录的键值为(46,74,18,53,14,20,40,38,86,65),利用堆排序的方法建立的初始堆为()A、(14,18,38,46,65,40,20,53,86,74)B、(14,38,18,46,65,20,40,53,86,74)C、(14,18,20,38,40,46,53,65,74,86)考试答案不得超过此线D、(14,86,20,38,40,46,53,65,74,18)10、快速排序方法在()情况下最不利于发挥其长处。

A、要排序的数据太大B、要排序的数据中含有多个相同值C、要排序的数据已基本有序D、要排序的数据个数为奇数二、填空题(每小题2分,共16分)1、下面程序段中带下划线的语句的执行次数是for(i=0;i<=n;i++)for(j=0;j<=i;j++)x=x+1;2、若串S=‘software’,其非空子串的数目是3、设数组A[1..5,1..6] 的每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续内存单元中,则A[5,5]的地址是。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为空,则根节点已经为叶子节点。
3、递归求解树。将左子树和右子树分别看成一棵二叉树,重复1、2、3步,直到所有的节点完成定位。
二、已知二叉树的后序序列和中序序列,求解树。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Node /*树结点类型*/
{
int info; /*数据域*/
struct Node* parent; /*父结点*/
struct Node* lchild; /*左孩子结点*/
4、在后序序列LH中最后出现的元素为H,H|L|D|B|EK|A|FCG
5、在后序序列KE中最后出现的元素为E,H|L|D|B|E|K|A|FCG
5、在后序序列FGC中最后出现的元素为C,H|L|D|B|E|K|A|F|C|G
6、所有元素都已经定位,二叉树求解完成。
A
/ \
B C
/ \ / \
D E F G
post_order(root->rchild);
printf("%d ",root->info);
}
}
int main(void)
{
PNode *root;
int pre[50]={1,2,4,8,10,5,9,3,6,7};
int in[ 50]={8,10,4,2,5,9,1,6,3,7} ;
1、确定树的根。树根是当前树中所有元素在后序遍历中最后出现的元素。
2、求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为空,则根节点已经为叶子节点。
3、递归求解树。将左子树和右子树分别看成一棵二叉树,重复1、2、3步,直到所有的节点完成定位。
/*建树*/
root = Init_tree(pre,in,10);
printf("\n前序遍历结果:\n");
pre_order(root);
printf("\n中序遍历结果:\n");
in_order(root);
printf("\n后序遍历结果:\n")ntf("\n");
struct Node* rchild; /*右孩子结点*/
}PNode;
struct Stack /*栈结点类型*/
{
int* pre;
int* in;
int n;
PNode parent;
};
PNode *Init_tree(int *pre,int *in,int n);//声明
/*前序遍历*/
return(root);
}
树的形状
1
/ \
2 3
/ \ / \
4 5 6 7
/ \
8 9
\
10
这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的,证明略。
一、已知二叉树的前序序列和中序序列,求解树。
1、确定树的根节点。树根是当前树中所有元素在前序遍历中最先出现的元素。
/ \
H K
\
L
代码的运行结果
void pre_order(PNode *root)
{
if (root != NULL)
{
printf("%d ",root->info);
pre_order(root->lchild);
pre_order(root->rchild);
}
}
/*中序遍历*/
void in_order(PNode *root)
return 0;
}
PNode *Init_tree(int *pre,int *in,int n)
{
PNode *root;
int *p,*q,i,j,m;
if(n<=0)
return (NULL);
root=(PNode*)malloc(sizeof(PNode));
root->info=pre[0];
举例说明:根据已知求解二叉树
中序序列HLDBEKAFCG
后序序列LHDKEBFGCA
1、在后序序列LHDKEBFGCA中最后出现的元素为A,HLDBEK|A|FCG
2、在后序序列LHDKEB中最后出现的元素为B,HLD|B|EK|A|FCG
3、在后序序列LHD中最后出现的元素为D,HL|D|B|EK|A|FCG
root->lchild=root->rchild=NULL;
i=0;
while(i<n)
{
if(pre[0]==in[i])
break;
++i;
}
p=pre+1;
q=in;
root->lchild=Init_tree(p,q,i);
p=pre+i+1;
q=in+i+1;
root->rchild=Init_tree(p,q,n-i-1);
{
if (root != NULL)
{
in_order(root->lchild);
printf("%d ",root->info);
in_order(root->rchild);
}
}
/*后序遍历*/
void post_order(PNode *root)
{
if (root != NULL)
{
post_order(root->lchild);
相关文档
最新文档