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;
}
}
Le code ci-dessus est affiché ma commande de niveau code traversal. Ce code fonctionne bien pour moi mais une chose que je n'aime pas, c'est que j'initialise explicitement temp_node = NULL
ou que j'utilise le break. Mais cela ne semble pas être un bon code pour moi.niveau d'un ordre Traversal Binary Tree
Y a-t-il une implémentation soignée ou comment puis-je améliorer ce code?
Indenter avec onglet de cohérence. – Potatoswatter
Oh, ce n'est pas aussi appelé 'level-order'. Il est généralement appelé «largeur d'abord» par opposition à «profondeur d'abord». – Omnifarious
@MOnifarious IMHO, 'level-order' est beaucoup plus expressif et succinct que la terminologie' breadth first search' (BFS). Juste aller niveau par niveau en traversant. Aussi simple que cela puisse paraître! – RBT