[c언어] 트리 순회 알고리즘

트리는 데이터를 계층적으로 표현하는 자료구조입니다. 이번 글에서는 트리를 순회하는 알고리즘에 대해 다뤄보겠습니다. 트리를 순회한다는 것은 모든 노드를 한 번씩 방문하는 것을 의미합니다. 이때, 방문 순서에 따라 세 가지 종류의 순회 알고리즘이 있습니다.

전위 순회 (Preorder Traversal)

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

void preorderTraversal(Node* root) {
    if (root != NULL) {
        printf("%d ", root->data); // 노드 방문
        preorderTraversal(root->left); // 왼쪽 서브트리 순회
        preorderTraversal(root->right); // 오른쪽 서브트리 순회
    }
}

중위 순회 (Inorder Traversal)

중위 순회는 왼쪽 서브트리를 먼저 순회한 후, 루트 노드를 방문하고 나서 오른쪽 서브트리를 순회하는 방법입니다.

void inorderTraversal(Node* root) {
    if (root != NULL) {
        inorderTraversal(root->left); // 왼쪽 서브트리 순회
        printf("%d ", root->data); // 노드 방문
        inorderTraversal(root->right); // 오른쪽 서브트리 순회
    }
}

후위 순회 (Postorder Traversal)

후위 순회는 왼쪽 서브트리와 오른쪽 서브트리를 먼저 순회한 후, 루트 노드를 방문하는 방법입니다.

void postorderTraversal(Node* root) {
    if (root != NULL) {
        postorderTraversal(root->left); // 왼쪽 서브트리 순회
        postorderTraversal(root->right); // 오른쪽 서브트리 순회
        printf("%d ", root->data); // 노드 방문
    }
}

이렇게 트리를 순회하는 알고리즘은 매우 유용하며, 데이터의 처리나 탐색 등 다양한 응용에 활용될 수 있습니다.

그럼, 알고리즘에 대해 잘 이해했으면서 관련 코드를 작성하는데 어려움이 있다면, 아래 참고 자료를 참고해 보시기 바랍니다.

참고 자료