/*烟台大学计算机学院
文件名称:btree
作者:董玉祥
完成日期: 2017 11 12
问题描述:(1)层次遍历算法的验证 (2)二叉树构造算法的验证
*/
(1)层次遍历算法的验证:
#include "stdio.h"
#include "btree.h"
#include "malloc.h"
void LevelOrder(BTNode *b) //层次遍历
{
BTNode *qu[MaxSize];
int rear,front;
rear=front=-1;
rear++;
qu[rear]=b;
while(rear!=front)
{
front=(front+1)%MaxSize;
printf("%c ",qu[front]->data);
if(qu[front]->lchild!=NULL)
{
rear=(rear+1)%MaxSize;
qu[rear]=qu[front]->lchild;
}
if(qu[front]->rchild!=NULL)
{
rear=(rear+1)%MaxSize;
qu[rear]=qu[front]->rchild;
}
}
}
int main()
{
BTNode *b;
CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");
printf("二叉树b: ");
DispBTNode(b);
printf("\n");
printf("层次遍历序列:\n");
LevelOrder(b);
DestroyBTNode(b);
return 0;
}
(2)二叉树构造算法的验证:
BTNode *CreateBTNode1(char *pre,char *in,int n)//二叉树构造性算法
{ BTNode *s;char *p;
if(n<=0)
return NULL;
s=(BTNode*)malloc(sizeof(BTNode));
char ch;int k;
s->data=*pre;
for(p=in;p<in+n;p++)
if(*p==*pre)
break;
k=p-in;
s->lchild=CreateBTNode1(pre+1,in,k);
s->rchild=CreateBTNode1(pre+k+1,p+1,n-k-1);
return s;
}
int main()
{
ElemType pre[]="ABDGCEF",in[]="DGBAECF";
BTNode *b1;
b1=CreateBTNode1(pre,in,7);
printf("b1:");
DispBTNode(b1);
printf("\n");
return 0;
}
运行结果截图:
(1)
(2)