#include #include #include typedef struct Node { char *v; struct Node *l; struct Node *r; } Node; void an(Node **, Node *); void pn(Node *); void an(Node **r, Node *n) { if (!*r) { *r = n; return; } if (strcmp(n->v, (*r)->v) > 0) { an(&((*r)->r), n); } else { an(&((*r)->l), n); } return; } void pn(Node *n) { if (!n) { return; } if (n->l) { pn(n->l); } fprintf(stdout, "%s\n", n->v); if (n->r) { pn(n->r); } return; } int main(int argc, char **argv) { Node *r = NULL; for (argv++, argc--; argc; argv++, argc--) { Node *n = malloc(sizeof(Node)); n->v = *argv; n->l = n->r = NULL; an(&r, n); } pn(r); exit(EXIT_SUCCESS); }