Nivel de recorrido transversal de un árbol binario

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;
   }
 }

El código publicado anteriormente es mi código de recorrido de orden de nivel. Este código funciona bien para mí, pero una cosa que no me gusta es que estoy inicializando explícitamentetemp_node = NULL o uso el descanso Pero no parece ser un buen código para mí.

¿Existe una implementación ordenada que esta o cómo puedo mejorar este código?

Respuestas a la pregunta(6)

Su respuesta a la pregunta