您的位置:首页 > 其它

树结构练习——排序二叉树的中序遍历

2012-07-19 20:39 134 查看
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2128

有些忘记了

View Code

#include<stdio.h>
#include<malloc.h>
typedef struct tree
{
struct tree *l,*r;
int data;
}tt;
int k;
void creat(tt *head,int a)
{
tt *p;
p = (tt *)malloc(sizeof(tt));
p->data = a;
if(head->data>a)//比它小往左走
{
if(head->l == NULL)
{
head->l = p;
p->l = NULL;
p->r = NULL;
}
else
creat(head->l,p->data);
}
else //否则往右走
{
if(head->r == NULL)
{
head->r = p;
p->l = NULL;
p->r = NULL;
}
else
creat(head->r,p->data);
}
}
void inorder(tt *head)//中序遍历
{
if(head!=NULL)
{
inorder(head->l);
if(k!=0)
printf(" ");
printf("%d",head->data);
k++;
inorder(head->r);
}
}
int main()
{
int n,i,j,a;
tt *head;
head = (tt *)malloc(sizeof(tt));
while(scanf("%d",&n)!=EOF)
{
k = 0;
for(i = 1 ;i <= n ; i++)
{
scanf("%d",&a);
if(i == 1)//根节点
{
head->data = a;
head->l = NULL;
head->r = NULL;
}
else
creat(head,a);//插入
}
inorder(head);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: