1 2 2 1 20
2 1 20
恩 。。建树方式很简单,一开始sb想多了
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <string>
#include <cctype>
#include <vector>
#include <cstdio>
#include <cmath>
#include <deque>
#include <stack>
#include <map>
#include <set>
#define ll long long
#define maxn 1010
#define pp pair<int,int>
#define INF 0x3f3f3f3f
#define max(x,y) ( ((x) > (y)) ? (x) : (y) )
#define min(x,y) ( ((x) > (y)) ? (y) : (x) )
using namespace std;
typedef struct node
{
int d;
node *l,*r;
}*p;
int n,sb;
void Insert(p &T,int x)
{
if(T==NULL)
{
T=new node;
T->l=NULL;T->r=NULL;
T->d=x;
}
else
{
if(x<T->d)
Insert(T->l,x);
else
Insert(T->r,x);
}
}
void in(p T)
{
if(T)
{
in(T->l);
if(!sb)
{
printf("%d",T->d);
++sb;
}
else
printf(" %d",T->d);
in(T->r);
}
}
int main()
{
while(~scanf("%d",&n))
{
p root=NULL;int x;
for(int i=0;i<n;i++)
{
scanf("%d",&x);
Insert(root,x);
}
sb=0;
in(root);puts("");
}
return 0;
}
原文:http://blog.csdn.net/qq_16255321/article/details/41082913