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;
}
}
Der oben angegebene Code ist mein Level Order Traversal Code. Dieser Code funktioniert gut für mich, aber eine Sache, die ich nicht mag, ist, dass ich explizit temp_node = NULL
initialisiere oder ich benutze Pause. Aber es scheint mir kein guter Code zu sein.Level Order Traversal eines Binärbaums
Gibt es eine nette Implementierung als diese oder wie kann ich diesen Code besser machen?
einrücken mit Tab für Konsistenz. – Potatoswatter
Oh, es wird auch nicht allgemein 'Level-Reihenfolge' genannt. Es wird normalerweise "Breite zuerst" genannt, im Gegensatz zu "Tiefe zuerst". – Omnifarious
@Onmifarious IMHO, "level-order" ist weit ausdrucksstärker und prägnanter als "breath first search" (BFS). Gehe einfach während des Traversierens Level für Level. So einfach wie es klingt! – RBT