[c++] 레벨 순회(Level Order Traversal)

이번에는 이진 트리의 각 레벨을 순회하는 방법에 대해 알아보겠습니다. 레벨 순회(Level Order Traversal)는 트리 구조를 각 레벨별로 순차적으로 방문하는 방법입니다.

#include <iostream>
#include <queue>

struct Node {
    int value;
    Node* left;
    Node* right;
    Node(int v) : value(v), left(nullptr), right(nullptr) {}
};

void levelOrderTraversal(Node* root) {
    if (root == nullptr)
        return;

    std::queue<Node*> q;
    q.push(root);

    while (!q.empty()) {
        Node* current = q.front();
        q.pop();

        std::cout << current->value << " ";

        if (current->left != nullptr)
            q.push(current->left);

        if (current->right != nullptr)
            q.push(current->right);
    }
}

int main() {
    Node* root = new Node(1);
    root->left = new Node(2);
    root->right = new Node(3);
    root->left->left = new Node(4);
    root->left->right = new Node(5);

    std::cout << "레벨 순회(Level Order Traversal): ";
    levelOrderTraversal(root);

    return 0;
}

위의 코드는 이진 트리를 생성하고, 레벨 순회를 수행하는 간단한 C++ 예제입니다. Node 구조체를 통해 이진 트리를 정의하고, levelOrderTraversal 함수를 사용하여 레벨 순회를 구현하였습니다. 실제로 실행하면 다음과 같은 결과를 얻을 수 있습니다.

레벨 순회(Level Order Traversal): 1 2 3 4 5

위의 예제를 참고하여 이진 트리의 레벨 순회를 구현할 수 있습니다.

이상으로 C++의 이진 트리 레벨 순회에 대해 알아보았습니다.

참고문헌: