SDUT 2128 트리 구조 연습 - 두 갈래 트리 정렬의 중간 순서 반복

14870 단어 두 갈래 나무
제목 링크
두 갈래 나무를 목측하는 것은 바로 두 갈래 나무를 정렬하는 데 쓰인다.그리고 AC 코드도 패러디해.
 1 #include <stdio.h>

 2 #include <string.h>

 3 #include <stdlib.h>

 4 int num[1001];

 5 int n,z;

 6 struct tree

 7 {

 8     int data;

 9     struct tree *left;

10     struct tree *right;

11 };

12 struct tree *build()

13 {

14     struct tree *p;

15     p = (struct tree *)malloc(sizeof(struct tree));

16     p -> data = num[1];

17     p -> left = NULL;

18     p ->right = NULL;

19     return p;

20 }

21 void search(struct tree *head,int x)

22 {

23     struct tree *p;

24     if(head -> data > x)

25     {

26         if(head -> left != NULL)

27             search(head -> left,x);

28         else

29         {

30             p = (struct tree *)malloc(sizeof(struct tree));

31             p -> data = x;

32             p -> left = NULL;

33             p ->right = NULL;

34             head ->left = p;

35         }

36     }

37     else

38     {

39         if(head -> right != NULL)

40             search(head -> right,x);

41         else

42         {

43             p = (struct tree *)malloc(sizeof(struct tree));

44             p -> data = x;

45             p -> left = NULL;

46             p ->right = NULL;

47             head -> right = p;

48         }

49     }

50 }

51 void midshow(struct tree *k)

52 {

53     if(k)

54     {

55         midshow(k -> left);

56         if(z)

57         {

58             printf("%d",k -> data);

59             z = 0;

60         }

61         else

62             printf(" %d",k ->data);

63         midshow(k -> right);

64     }

65     else

66         return ;

67 }

68 int main()

69 {

70     int i;

71     struct tree *head;

72     while(scanf("%d",&n)!=EOF)

73     {

74         z = 1;

75         for(i = 1; i <= n; i ++)

76         {

77             scanf("%d",&num[i]);

78             if(i == 1)

79                 head = build();

80             else

81                 search(head,num[i]);

82         }

83         midshow(head);

84         printf("
"); 85 } 86 return 0; 87 }

패러디판
 1 #include <stdio.h>

 2 #include <stdlib.h>

 3 int p[1001];

 4 int cmp(const void *a,const void *b)

 5 {

 6     return *(int *)a - *(int *)b;

 7 }

 8 int main()

 9 {

10     int n,i;

11     while(scanf("%d",&n)!=EOF)

12     {

13         for(i = 0; i <= n-1; i ++)

14             scanf("%d",&p[i]);

15         qsort(p,n,sizeof(p[0]),cmp);

16         for(i = 0; i <= n-1; i ++)

17         {

18             if(i == 0)

19                 printf("%d",p[i]);

20             else

21                 printf(" %d",p[i]);

22         }

23         printf("
"); 24 } 25 return 0; 26 }

좋은 웹페이지 즐겨찾기