fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAXLEN 15
  5.  
  6. typedef struct treeNode{
  7. char string[MAXLEN+1];
  8. struct treeNode *left;
  9. struct treeNode *right;
  10. }treeNode;
  11.  
  12. treeNode * insert(treeNode *node, char s[])
  13. {
  14. if(node == NULL)
  15. {
  16. node = malloc(sizeof(*node));
  17. strncpy(node->string, s, sizeof(node->string)-1);
  18. node->string[ sizeof(node->string)-1 ] = 0;
  19. node->left = node->right = NULL;
  20. }
  21.  
  22. else if(strcmp(s, node->string) > 0)
  23. node->right = insert(node->right, s);
  24. else
  25. node->left = insert(node->left, s);
  26.  
  27. return node;
  28. }
  29.  
  30. void print_sorted_tree(const treeNode* p, FILE *fp)
  31. {
  32. if (!p)
  33. return;
  34.  
  35. print_sorted_tree(p->left, fp);
  36. fprintf(fp, "%s\n", p->string);
  37. print_sorted_tree(p->right, fp);
  38. }
  39.  
  40.  
  41. int main(int argc, char *argv[])
  42. {
  43. treeNode *root = NULL;
  44.  
  45. FILE *ifp = stdin;
  46. FILE *ofp = stdout;
  47. char s[MAXLEN+1];
  48.  
  49. while(fscanf(ifp, "%s\n", s) == 1)
  50. root = insert(root, s);
  51.  
  52. print_sorted_tree(root, ofp);
  53.  
  54. return 0;
  55. }
Success #stdin #stdout 0s 2188KB
stdin
bring
awake
anger
carry
global
fixed
halt
stdout
anger
awake
bring
carry
fixed
global
halt