HDU 3999 BST基础

来源:互联网 发布:linux创建目录 ls 编辑:程序博客网 时间:2024/05/01 14:08

初学BST树,拿来练练手。

题目是你一个序列,叫你求出建同样的树所用的最少字典序的序列。。。。

嗯。。应该就是前序了。。。

然后。。恩恩。。。。

#include <stdio.h>#define maxn 100100struct 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;}


0 0
原创粉丝点击