第十周 项目1
来源:互联网 发布:mac查看内存占用 编辑:程序博客网 时间:2024/05/29 04:31
(1)层次遍历算法的验证
#include <stdio.h>
#include "btree.h"
void LevelOrder(BTNode *b)
{
BTNode *p;
BTNode *qu[MaxSize]; //定义环形队列,存放节点指针
int front,rear; //定义队头和队尾指针
front=rear=-1; //置队列为空队列
rear++;
qu[rear]=b; //根节点指针进入队列
while (front!=rear) //队列不为空
{
front=(front+1)%MaxSize;
p=qu[front]; //队头出队列
printf("%c ",p->data); //访问节点
if (p->lchild!=NULL) //有左孩子时将其进队
{
rear=(rear+1)%MaxSize;
qu[rear]=p->lchild;
}
if (p->rchild!=NULL) //有右孩子时将其进队
{
rear=(rear+1)%MaxSize;
qu[rear]=p->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)二叉树构造算法的验证
#include <stdio.h>
#include <malloc.h>
#include "btree.h"BTNode *CreateBT1(char *pre,char *in,int n)
/*pre存放先序序列,in存放中序序列,n为二叉树结点个数,本算法执行后返回构造的二叉链的根结点指针*/
{
BTNode *s;
char *p;
int k;
if (n<=0) return NULL;
s=(BTNode *)malloc(sizeof(BTNode)); //创建二叉树结点*s
s->data=*pre;
for (p=in; p<in+n; p++) //在中序序列中找等于*ppos的位置k
if (*p==*pre) //pre指向根结点
break; //在in中找到后退出循环
k=p-in; //确定根结点在in中的位置
s->lchild=CreateBT1(pre+1,in,k); //递归构造左子树
s->rchild=CreateBT1(pre+k+1,p+1,n-k-1);//递归构造右子树
return s;
}
int main()
{
ElemType pre[]="ABDGCEF",in[]="DGBAECF";
BTNode *b1;
b1=CreateBT1(pre,in,7);
printf("b1:");
DispBTNode(b1);
printf("\n");
return 0;
}
- 第十周项目1
- 第十周项目1
- 第十周项目1
- 第十周 项目1
- 第十周【项目1
- 第十周【项目1
- 第十周【项目1
- 第十周 项目1
- 第十周-项目1
- 第十周 【项目1
- 第十周-项目1
- 第十周-项目1
- 第十周-项目1
- 第十周项目1
- 第十周 【项目1
- 第十周 项目1
- 第十周 【项目1
- 第十周 【项目1
- 移植Usmart串口调试组件过程
- Spring之容器的实现
- pe节表
- 单元测试A ServletContext is required to configure default servlet handling错误
- JZOJ 5496 Tree
- 第十周 项目1
- 欢迎使用CSDN-markdown编辑器
- MAC 忘记mysql密码怎么办
- CentOS7系统安装Caffe
- 400% 的飞跃-web 页面加载速度优化实战
- mysql TRUNCATE和delete的区别
- 利用docker+power shell 打造一个自动化编译平台
- Redis 集群教程
- JQUERY常用效果简单实现方法淡入淡出,隐藏等