建一个二叉搜索树,然后前序输出。
用链表建的,发现很久没做都快忘了。。。
#include <cstdio>
#include <cstdlib>
struct Node{
int v;
Node* l;
Node* r;
};
Node* root;
Node* newnd(int value) {
Node* u = (Node*) malloc(sizeof(Node));
if (u != NULL) {
u -> v = value;
u -> r = u -> l = NULL;
}
return u;
}
Node* addnd(int value, Node* u) {
if (u == NULL)
return newnd(value);
if (u -> v > value)
u -> r = addnd(value, u -> r);
else
u -> l = addnd(value, u -> l);
return u;
}
void input(Node* u, int n) {
if (n == 0)
printf("%d", u->v);
else
printf(" %d", u->v);
if (u -> r != NULL)
input(u -> r, n + 1);
if (u -> l != NULL)
input(u -> l, n + 1);
}
int main() {
int n, tmp;
scanf("%d", &n);
root = NULL;
for (int i = 0; i < n; i++){
scanf("%d", &tmp);
root = addnd(tmp, root);
}
input(root, 0);
printf("\n");
return 0;
}