树与二叉树练习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的链栈中,编写计算该链栈中结点个数的算法。

相关文档
最新文档