建立二叉搜索树,水题。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAX = 100001;
int x = 0;
struct Node{
Node *left;
Node *right;
int value;
Node(){
left = NULL;
right = NULL;
}
}*head;
Node* new_tree(Node *t,int n){
if (t == NULL){
t = a[x++];
t->value = n;
return t;
}
else {
if (n > t->value)
t->right = new_tree(t->right,n);
else
t->left = new_tree(t->left,n);
return t;
}
}
void travel_tree(Node *t,int b){
if (t) {
if(b)
cout << " " << t->value;
else
cout << t->value;
}
if (t->left){
travel_tree(t->left,1);
}
if (t->right){
travel_tree(t->right,1);
}
}
int main(){
while (1) {
x = 0;
int n;
int N;
if (!(cin >> N))
break;
for (int i = 0; i < N; i++){
cin >> n;
head = new_tree(head,n);
}
travel_tree(head,0);
cout << endl;
for (int i = 0; i < MAX; i++) {
if (a[i].left != NULL || a[i].right != NULL) {
a[i].left = NULL;
a[i].right = NULL;
}
else
break;
}
}
return 0;
}