fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <memory.h>
  4.  
  5. typedef struct TreeNode {
  6. int data;
  7. struct TreeNode *left, *right;
  8. } TreeNode;
  9.  
  10. TreeNode n1 = { 1, NULL, NULL };
  11. TreeNode n2 = { 4, &n1, NULL };
  12. TreeNode n3 = { 16, NULL, NULL };
  13. TreeNode n4 = { 25, NULL, NULL };
  14. TreeNode n5 = { 20, &n3, &n4 };
  15. TreeNode n6 = { 15, &n2, &n5 };
  16. TreeNode *root = &n6;
  17.  
  18. void inorder(TreeNode *root) {
  19. if (root != NULL) {
  20. inorder(root->left);// 왼쪽서브트리 순회
  21. printf("[%d] ", root->data); // 노드 방문
  22. inorder(root->right);// 오른쪽서브트리 순회
  23. }
  24. }
  25.  
  26. void preorder(TreeNode *root) {
  27. if (root != NULL) {
  28. printf("[%d] ", root->data); // 노드 방문
  29. preorder(root->left);// 왼쪽서브트리 순회
  30. preorder(root->right);// 오른쪽서브트리 순회
  31. }
  32. }
  33.  
  34. void postorder(TreeNode *root) {
  35. if (root != NULL) {
  36. postorder(root->left);// 왼쪽서브트리 순회
  37. postorder(root->right);// 오른쪽서브트리순회
  38. printf("[%d] ", root->data); // 노드 방문
  39. }
  40. }
  41. int main(void)
  42. {
  43. printf("중위 순회=");
  44. inorder(root);
  45. printf("\n");
  46.  
  47. printf("전위 순회=");
  48. preorder(root);
  49. printf("\n");
  50.  
  51. printf("후위 순회=");
  52. postorder(root);
  53. printf("\n");
  54. return 0;
  55. }
  56.  
Success #stdin #stdout 0s 4480KB
stdin
Standard input is empty
stdout
중위 순회=[1] [4] [15] [16] [20] [25] 
전위 순회=[15] [4] [1] [20] [16] [25] 
후위 순회=[1] [4] [16] [25] [20] [15]