欢迎来到天天文库
浏览记录
ID:20486615
大小:25.00 KB
页数:3页
时间:2018-10-12
《五树及二叉树练习题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、树与二叉树练习题(五)习题2010-05-2517:27:01阅读55评论0字号:大中小1.己知二叉树采用二叉链表方式存放,要求返回二叉树T的后序序列中的第一个结点的指针,是否可以不用递归且不用栈来完成?请说明原因。2.具有n个结点的满二叉树的叶子结点的个数是多少?说明理由。3.列出先序遍历能得到ABC序列的所有不同的二又树。4.画出同时满足下列两个条件的两棵不同的二叉树:(1) 按先序遍历二叉树顺序为ABCDE;(2) 高度为5,其对应的树(森林)的高度最大为4。5.对于表达式(a-b+c)*d/(e+f)(1) 画出它的中序
2、二叉树,并标出该二叉树的前序线索;(2) 给出它的前缀表达式和后缀表达式。6.试找出分别满足下列条件的所有二叉树:(1) 先序序列和中序序列相同;(2) 中序序列和后序序列相同;(3) 先序序列和后序序列相同。 7.阅读下列算法的描述,根据算法的要求,在相应的空格处写出正确合理的语句。后序遍历二叉树的非递归算法,bt是二叉树的根,S是一个栈,MaxSize是栈的最大容量。typedefstructNode{ BTNode *[MaxSize+1]; int top;}stacktyp;voidPos
3、tOrder(BTNode*bt){ BTNode *p,*q=bt; stacktyp S; int flag; S.top=-1; do{ while(q!=NULL){ S.top++; if(S.top>MaxSize){ printf("StackFull!"); exit(0); } else S.data[S.top]=q; _______①_____; } flag=1; p=NULL; while(S.top!=-1 &&flag){ q=S.data[S
4、.top]; if(_________②__________){ printf(q->data); S.to--; p=q; } else{ _________③__________; flag=0; } } }while(__________④__________);} 8.具有n个结点的完全二又树,已经顺序存储在一维数组A[n]中,下面算法是将A中顺序存储变成二叉链表存储的完全二又树。请在空缺处填入适当语句,以完成上述算法。Elemtype A[n];voidCreatTree(B
5、TNode*T,inti){ _________①_________; T->data=A[i]; if(________②________) CreatTree(_______③________); else r->lchild=NULL; if(_________④_________) CreatTree(_______⑤________); else r->rchild=NULL;}voidBTree(ara,BTNOde*p){ int j; j=________⑥__________; CreatTree(p,
6、j);} 9.二叉树采用二叉链表存储结构,试设计算法计算一棵给定二叉树的各结点的子孙个数。10.一棵具有n个结点的完全二叉树,以一维数组作为存储结构,试设计一个对该完全二叉树进行前序遍历的算法。11.已知一棵二叉树的前序遍历序列和中序遍历序列,编写算法建立对应的二叉树。12.编写一个算法,利用叶子结点中的空指针域,将所有叶子结点链接为一个带有头结点的单链表,算法返回头结点的地址。
此文档下载收益归作者所有