Treesort [string array]

#include

#include

#include


struct tnode { 

 char *str;

 struct tnode *left; 

 struct tnode *right; 

};


void insert(struct tnode **p, char *value);

void print(struct tnode *root);


int main(void) {

 char line[1024];

 struct tnode *root;


 root = NULL;

 while((fgets(line, 1024, stdin)) != NULL)

  insert(&root, line);


 print(root);

 return 0;

}


/* call by reference .. ! */

void insert(struct tnode **p, char *value) {

 if(!*p) {

  *p = (struct tnode *)malloc(sizeof(struct tnode));

  (*p)->left = (*p)->right = NULL;

  (*p)->str = strdup(value);

  return;

 }


 if(strcmp(value, (*p)->str) < 0)

  insert(&(*p)->left, value);

 else 

  insert(&(*p)->right, value);

}

 

/* inorder binary tree print ... */

void print(struct tnode *root) {

 if(root != NULL) {

  print(root->left);

  printf("%s", root->str); 

  print(root->right);

 }

}


0 comments:

Post a Comment