Advertisement
Brabrabra

二元樹 pre、in、post

Oct 20th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.79 KB | None | 0 0
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. typedef struct list
  4. {
  5.     int data;
  6.     struct list *right;
  7.     struct list *left;
  8. } node;
  9. typedef node *link;
  10. link create(int n)
  11. {
  12.     link temp;
  13.     temp=(link)malloc(sizeof(node));
  14.     temp->data=n;
  15.     temp->right=NULL;
  16.     temp->left=NULL;
  17.     return temp;
  18. }
  19. void insert(link tree,int n)
  20. {
  21.     link temp;
  22.     link curr=tree;
  23.     link parent;
  24.     temp=(link)malloc(sizeof(node));
  25.     temp->data=n;
  26.     temp->right=NULL;
  27.     temp->left=NULL;
  28.     while(curr!=NULL)
  29.     {
  30.         parent=curr;
  31.         if(curr->data>n)
  32.             curr=curr->left;
  33.         else
  34.             curr=curr->right;
  35.     }
  36.     if(parent->data>n)
  37.         parent->left=temp;
  38.     else
  39.         parent->right=temp;
  40. }
  41. void inorder(link tree)
  42. {
  43.     if(tree!=NULL)
  44.     {
  45.         inorder(tree->left);
  46.         printf("%d ",tree->data);
  47.         inorder(tree->right);
  48.     }
  49. }
  50. void posorder(link tree)
  51. {
  52.     if(tree!=NULL)
  53.     {
  54.         posorder(tree->left);
  55.         posorder(tree->right);
  56.         printf("%d ",tree->data);
  57.     }
  58. }
  59. void preorder(link tree)
  60. {
  61.     if(tree!=NULL)
  62.     {
  63.         printf("%d ",tree->data);
  64.         preorder(tree->left);
  65.         preorder(tree->right);
  66.     }
  67. }
  68. void f(link tree)
  69. {
  70.      if(tree!=NULL)
  71.     {
  72.         f(tree->left);
  73.         f(tree->right);
  74.         free(tree);
  75.     }
  76. }
  77. int main()
  78. {
  79.     link tree;
  80.     int n;
  81.     while(scanf("%d",&n)!=EOF)
  82.     {
  83.         int i;
  84.         int num;
  85.         for(i=0; i<n; i++)
  86.         {
  87.             scanf("%d",&num);
  88.             if(i==0)
  89.                 tree=create(num);
  90.             else
  91.                 insert(tree,num);
  92.         }
  93.         inorder(tree);
  94.         printf("\n");
  95.         posorder(tree);
  96.         printf("\n");
  97.         preorder(tree);
  98.         f(tree);
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement