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 cruce de orden de nivel. Este código funciona bien para mí, pero una cosa que no me gusta es que estoy inicializando explícitamente temp_node = NULL
o uso Break. Pero no parece ser un buen código para mí.Recorrido de orden de nivel de un árbol binario
¿Existe una clara implementación de esto o cómo puedo mejorar este código?
sangría, con grifo de consistencia. – Potatoswatter
Oh, tampoco se suele llamar 'orden de nivel'. Por lo general, se lo llama 'amplitud primero' en lugar de 'profundidad primero'. – Omnifarious
@Omnifarious En mi humilde opinión, el "nivel de orden" es mucho más expresivo y sucinto que la terminología de "amplitud de primera búsqueda" (BFS). Simplemente ve nivel por nivel durante el recorrido. ¡Tan simple como suena! – RBT