[c언어] 트리의 순회 방법

이번 포스팅에서는 C언어에서 트리(Tree) 자료구조를 순회하는 방법에 대해 알아보겠습니다. 트리 순회란 트리에 포함된 모든 노드를 방문하는 방법을 말합니다.

전위 순회 (Preorder Traversal)

전위 순회는 루트 노드를 가장 먼저 방문하고, 그 다음에 왼쪽 서브트리를 순회한 후에 오른쪽 서브트리를 순회하는 방법입니다. 전위 순회의 순서는 다음과 같습니다.

  1. 현재 노드를 출력한다.
  2. 왼쪽 서브트리를 전위 순회한다.
  3. 오른쪽 서브트리를 전위 순회한다.
void preorderTraversal(Node *root) {
    if (root != NULL) {
        printf("%d ", root->data);
        preorderTraversal(root->left);
        preorderTraversal(root->right);
    }
}

중위 순회 (Inorder Traversal)

중위 순회는 왼쪽 서브트리를 순회한 후에 현재 노드를 방문하고, 그 다음에 오른쪽 서브트리를 순회하는 방법입니다. 중위 순회의 순서는 다음과 같습니다.

  1. 왼쪽 서브트리를 중위 순회한다.
  2. 현재 노드를 출력한다.
  3. 오른쪽 서브트리를 중위 순회한다.
void inorderTraversal(Node *root) {
    if (root != NULL) {
        inorderTraversal(root->left);
        printf("%d ", root->data);
        inorderTraversal(root->right);
    }
}

후위 순회 (Postorder Traversal)

후위 순회는 왼쪽 서브트리를 순회한 후에 오른쪽 서브트리를 순회한 후에 마지막으로 현재 노드를 방문하는 방법입니다. 후위 순회의 순서는 다음과 같습니다.

  1. 왼쪽 서브트리를 후위 순회한다.
  2. 오른쪽 서브트리를 후위 순회한다.
  3. 현재 노드를 출력한다.
void postorderTraversal(Node *root) {
    if (root != NULL) {
        postorderTraversal(root->left);
        postorderTraversal(root->right);
        printf("%d ", root->data);
    }
}

이상으로 C언어에서 트리를 전위, 중위, 후위 순회하는 방법에 대해 알아보았습니다. 각 순회 방법은 재귀적인 방법을 사용하여 구현할 수 있습니다.

참고문헌: GeeksforGeeks - Tree Traversals (Inorder, Preorder and Postorder)