建一个二叉搜索树,然后前序输出。
用链表建的,发现很久没做都快忘了。。。
#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(" "); return 0; }