第十周——项目一(1)(2)

来源:互联网 发布:ai软件描边 编辑:程序博客网 时间:2024/06/14 13:57
/*烟台大学计算机学院  文件名称: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)