初学BST树,拿来练练手。
题目是你一个序列,叫你求出建同样的树所用的最少字典序的序列。。。。
嗯。。应该就是前序了。。。
然后。。恩恩。。。。
#include <stdio.h>
#define maxn 100100
struct node
{
int val;
node *left,*right;
}tree[maxn];
void insert(node *rt,node *x)
{
node *p=rt,*pre;
while(p!=NULL)
{
pre=p;
if(x->val<pre->val) p=pre->left;
else p=pre->right;
}
if(x->val<pre->val) pre->left=x;
else pre->right=x;
}
void query(node *rt,int flag)
{
if(rt==NULL) return;
if(flag) printf("%d",rt->val),flag=0;
else printf(" %d",rt->val);
query(rt->left,flag);
query(rt->right,flag);
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i,j,k;
node init;
init.val=0,init.left=init.right=NULL;
for(i=1;i<=n;i++)
{
scanf("%d",&tree[i].val);
tree[i].left=tree[i].right=NULL; //看到有人是用动态内存的方法,觉得这样。。。嗯,,,空间上不错,但是记得说重复开空间很耗时。
insert(&init,&tree[i]);
}
query(init.right,1);printf("\n");
}
return 0;
}