雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

树插入,树遍历——hdu3999

Posted on 2011-09-02 21:34  huhuuu  阅读(392)  评论(1编辑  收藏  举报
先将数据插入到一颗二叉树中,再中序遍历该树
View Code
#include<stdio.h>
#include
<string.h>
#include
<iostream>
using namespace std;

struct data
{
int l,m,r;
}node[
100090];

int add,ok=0;;

void insert(int c,int root)
{
if(c>node[root].m)//óò
{
if(node[root].r==-1)
{
node[root].r
=add;
node[add].m
=c;
add
++;
}
else
{
insert(c,node[root].r);
}
}
else
{
if(node[root].l==-1)
{
node[root].l
=add;
node[add].m
=c;
add
++;
}
else
{
insert(c,node[root].l);
}
}
}

void pre(int root)
{
if(node[root].m!=-1)
{
if(ok==1)
{
printf(
" %d",node[root].m);
}
else
{
ok
=1;
printf(
"%d",node[root].m);
}
}
if(node[root].l!=-1)
pre(node[root].l);
if(node[root].r!=-1)
pre(node[root].r);
}

int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
memset(node,
-1,sizeof(node));

add
=0;
ok
=0;
int i,temp;
scanf(
"%d",&temp);
node[add
++].m=temp;
for(i=1;i<n;i++)
{
scanf(
"%d",&temp);
insert(temp,
0);
}
pre(
0);
printf(
"\n");
}
}