Traversing of Tree Program in C

  1. /*traversing of tree*/  
  2. #include<stdio.h>  
  3. #include<conio.h>  
  4. struct rec  
  5. {  
  6.     long num;  
  7.     struct rec *left;  
  8.     struct rec *right;  
  9. };  
  10. struct rec *tree=NULL;  
  11. struct rec *insert(struct rec *tree,long num);  
  12. void preorder(struct rec *tree);  
  13. void inorder(struct rec *tree);  
  14. void postorder(struct rec *tree);  
  15. int count=1;  
  16. void main()  
  17. {  
  18.     int choice;  
  19.     long digit;  
  20.     do  
  21.      {  
  22.        choice=select();  
  23.        switch(choice)  
  24.           {  
  25.         case 1: puts("Enter integer: To quit enter 0");  
  26.             scanf("%ld",&digit);  
  27.             while(digit!=0)  
  28.                 {  
  29.                 tree=insert(tree,digit);  
  30.                 scanf("%ld",&digit);  
  31.                 }continue;  
  32.         case 2: puts("\npreorder traversing TREE");  
  33.             preorder(tree);continue;  
  34.         case 3: puts("\ninorder traversing TREEE");  
  35.             inorder(tree);continue;  
  36.         case 4: puts("\npostorder traversing TREE");  
  37.             postorder(tree);continue;  
  38.         case 5: puts("END");exit(0);  
  39.         }  
  40.     }while(choice!=5);  
  41. }  
  42. int select()  
  43. {  
  44. int selection;  
  45.     do  
  46.       {  
  47.         puts("Enter 1: Insert a node in the BT");  
  48.         puts("Enter 2: Display(preorder)the BT");  
  49.         puts("Enter 3: Display(inorder)the BT");  
  50.         puts("Enter 4: Display(postorder)the BT");  
  51.         puts("Enter 5: END");  
  52.         puts("Enter your choice");  
  53.         scanf("%d",&selection);  
  54.              if((selection<1)||(selection>5))  
  55.             {  
  56.               puts("wrong choice:Try again");  
  57.               getch(); }  
  58.        }while((selection<1)||(selection>5));  
  59.        return (selection);  
  60. }  
  61. struct rec *insert(struct rec *tree,long digit)  
  62. {  
  63.     if(tree==NULL)  
  64.       {  
  65.         tree=(struct rec *)malloc(sizeof(struct rec));  
  66.         tree->left=tree->right=NULL;  
  67.         tree->num=digit;count++;  
  68.       }  
  69. else  
  70.     if(count%2==0)  
  71.     tree->left=insert(tree->left,digit);  
  72. else  
  73.     tree->right=insert(tree->right,digit);  
  74.     return(tree);  
  75. }  
  76. void preorder(struct rec *tree)  
  77. {  
  78.     if(tree!=NULL)  
  79.       {  
  80.         printf("%12ld\n",tree->num);  
  81.         preorder(tree->left);  
  82.         preorder(tree->right);  
  83.       }  
  84. }  
  85. void inorder(struct rec *tree)  
  86. {  
  87.     if(tree!=NULL)  
  88.         {  
  89.         inorder(tree->left);  
  90.         printf("%12ld\n",tree->num);  
  91.         inorder(tree->right);  
  92.         }  
  93. }  
  94. void postorder(struct rec *tree)  
  95. {  
  96.     if(tree!=NULL)  
  97.       {  
  98.         postorder(tree->left);  
  99.         postorder(tree->right);  
  100.         printf("%12ld\n",tree->num);  
  101.       }  
  102.