树及二叉树实验第一题
来源:互联网 发布:excel用按钮录入数据 编辑:程序博客网 时间:2024/06/08 08:06
/*试写一算法判别给定的二叉树是否为二叉排序树,设次二叉树以二叉链表存储,且数中节点的关键字均不相同
测试数据
123456789#(是二叉排序树)
648257913#(不是二叉排序树)*/
#include"stdio.h"
#include"malloc.h"
#define maxsize 9//节点个数
typedef struct node{
char data;
struct node *lchile,*rchile;
}Bitree;
char score[maxsize]; //存储数组
int i=0;//变量
/*奈荞无音:鸣人的儿子博人问鸣人:“爸爸,你年轻的时候干了什么伟大的事啊?”鸣人摸了摸他的头,然后说:“我用了十五年,帮我曾经最喜欢的女生追回了她的丈夫。”
博人又问:“那妈妈呢?”鸣人眼里光线都温柔了,“妈妈坚持爱到了我爱她的那一天。”*/
//建立二叉树
Bitree *Q[maxsize];
Bitree *Creattree(){
char ch;
int front,rear;
Bitree *T,*s;
T=NULL; //置空二叉树
front=1;rear=0; //置空队列
ch=getchar(); //输入第一个字符
while(ch!='#'){ //不是结束符号时继续,则无需为虚节点申请空间
s=NULL;
if(ch!='@'){//@表示虚节点,不是虚节点时建立新节点
s=(Bitree*)malloc(sizeof(Bitree));
s->data=ch;
s->lchile=s->rchile=NULL;
}
rear++;
Q[rear]=s;
if(rear==1) T=s;
else{
if(s!=NULL && Q[front]!=NULL)
if(rear%2==0) Q[front]->lchile=s;
else Q[front]->rchile=s;
if(rear%2==1) front++;
}
ch=getchar();
}
return T;
}
//中序遍历二叉树
void Inorder(Bitree *T){
if(T){
Inorder(T->lchile);
printf("%c\t",T->data);
score[i]=T->data;
i++;
Inorder(T->rchile);
}
}
//判断该二叉树是否为二叉排序树
void Iscore(char score[maxsize]){
int j;
int flag=0;
for(j=0;j<maxsize-1;j++){
if(score[j]>score[j+1])
flag=1;
}
if(flag==1) printf("不是二排序叉树!!逗比!!");
else printf("是二叉排序树!!哥们!!");
}
int main(){
Bitree *T;
printf("请根据中序输入%d个节点:@表示虚节点,#表示结束\n",maxsize);
T=Creattree();
printf("二叉树建立完毕!!!兄弟!!!中序遍历数据如下:\n");
Inorder(T);
printf("数组中的数据为:\n");
for(i=0;i<maxsize;i++){
printf("%c\t",score[i]);
}
Iscore(score);
return 0;
}
测试数据
123456789#(是二叉排序树)
648257913#(不是二叉排序树)*/
#include"stdio.h"
#include"malloc.h"
#define maxsize 9//节点个数
typedef struct node{
char data;
struct node *lchile,*rchile;
}Bitree;
char score[maxsize]; //存储数组
int i=0;//变量
/*奈荞无音:鸣人的儿子博人问鸣人:“爸爸,你年轻的时候干了什么伟大的事啊?”鸣人摸了摸他的头,然后说:“我用了十五年,帮我曾经最喜欢的女生追回了她的丈夫。”
博人又问:“那妈妈呢?”鸣人眼里光线都温柔了,“妈妈坚持爱到了我爱她的那一天。”*/
//建立二叉树
Bitree *Q[maxsize];
Bitree *Creattree(){
char ch;
int front,rear;
Bitree *T,*s;
T=NULL; //置空二叉树
front=1;rear=0; //置空队列
ch=getchar(); //输入第一个字符
while(ch!='#'){ //不是结束符号时继续,则无需为虚节点申请空间
s=NULL;
if(ch!='@'){//@表示虚节点,不是虚节点时建立新节点
s=(Bitree*)malloc(sizeof(Bitree));
s->data=ch;
s->lchile=s->rchile=NULL;
}
rear++;
Q[rear]=s;
if(rear==1) T=s;
else{
if(s!=NULL && Q[front]!=NULL)
if(rear%2==0) Q[front]->lchile=s;
else Q[front]->rchile=s;
if(rear%2==1) front++;
}
ch=getchar();
}
return T;
}
//中序遍历二叉树
void Inorder(Bitree *T){
if(T){
Inorder(T->lchile);
printf("%c\t",T->data);
score[i]=T->data;
i++;
Inorder(T->rchile);
}
}
//判断该二叉树是否为二叉排序树
void Iscore(char score[maxsize]){
int j;
int flag=0;
for(j=0;j<maxsize-1;j++){
if(score[j]>score[j+1])
flag=1;
}
if(flag==1) printf("不是二排序叉树!!逗比!!");
else printf("是二叉排序树!!哥们!!");
}
int main(){
Bitree *T;
printf("请根据中序输入%d个节点:@表示虚节点,#表示结束\n",maxsize);
T=Creattree();
printf("二叉树建立完毕!!!兄弟!!!中序遍历数据如下:\n");
Inorder(T);
printf("数组中的数据为:\n");
for(i=0;i<maxsize;i++){
printf("%c\t",score[i]);
}
Iscore(score);
return 0;
}
0 0
- 树及二叉树实验第一题
- 二叉树实验第三题
- 二叉树实验
- 二叉树实验代码
- 二叉树实验
- 二叉树实验报告
- 二叉树实验
- 实验五 二叉树
- 二叉树实验
- 二叉树实验5
- 二叉树实现实验
- 实验报告 二叉树
- 实验7-二叉树
- 二叉树实验
- 二叉树实验报告
- 实验三 二叉树
- 第一课二叉树
- 数据结构实验: 按层次构造二叉树及二叉树遍历
- android service bindService onServiceConnected没有调用
- Java网络编程之TCP、UDP
- 快速排序算法
- Relief算法应用
- V4L2驱动程序架构
- 树及二叉树实验第一题
- C语言-求两个整数中的较大者
- wholesale nfl jerseys supply
- TextView
- 【转】使用Fiddler对手机应用进行抓包测试
- iis7下url重写后原本存在的html不能访问未能执行URL
- json
- Animation之Property Animation
- WIN32 API多线程编码--参数传递(二)