Уровень порядка обхода двоичного дерева

void traverse(Node* root)
{
    queue<Node*> q;

    Node* temp_node= root;

    while(temp_node)
    {
        cout<<temp_node->value<<endl;

        if(temp_node->left)
            q.push(temp_node->left);

        if(temp_node->right)
            q.push(temp_node->right);

        if(!q.empty())
        {
            temp_node = q.front();
            q.pop();
        }
        else
            temp_node = NULL;
   }
 }

Приведенный выше код - мой код прохождения заказа уровня. Этот код хорошо работает для меня, но одна вещь, которая мне не нравится, я явно инициализируюtemp_node = NULL или я использую перерыв. Но это не похоже на хороший код для меня.

Есть аккуратная реализация, чем эта, или как я могу сделать этот код лучше?

Ответы на вопрос(6)

Ваш ответ на вопрос