// 노드 struct
typedef struct Node {
  char data;
  struct node* left;
  struct node* right;
} Node;
// Preorder Traversal
void print_Preorder (Node* root) {
    if (root == NULL) {
        return;
    }
    
    printf("%c ", root->data);  // root 출력
    print_Preorder(root->left); // 왼쪽 서브트리 재귀
    print_Preorder(root->right);    // 오른쪽 서브트리 재귀
}

// Inorder Traversal
void print_Inorder (Node* root) {
  if (root == NULL){
    return;
  }

  print_Inorder(root->left); // 왼쪽 서브트리로 재귀
  printf("%c ", root->data);  // root 출력
  print_Inorder(root->right);  // 오른쪽 서브트리로 재귀
}

// Postorder Traversal
void print_Postorder (Node *root) {
  if (root == NULL){
    return;
  }
  
  print_Postorder(root->left); // 왼쪽 서브트리로 재귀
  print_Postorder(root->right);  // 오른쪽 서브트리 재귀
  printf("%c ", root->data);  // root 출력
}