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