Ich versuche Baum Traversal PreOrder mit Ertrag Rückkehr zu implementieren, die gibt eine IEnumerable
private IEnumerable<T> Preorder(Node<T> node)
{
while(node != null)
{
yield return node.Data;
yield return node.LeftChild.Data;
yield return node.RightChild.Data;
}
}
In diesem Fall geht es in Endlosschleife und ja, ich weiß, dass ich Verfahrgeschwindigkeit halten müssen. Wie kann dies geschehen?
Wenn die LeftChild oder RightChild null ist, wirft eine Null Ausnahme. Ich denke, an diesem Punkt i Pause ergeben müssen;
Ich gehe davon aus, inorder und Postorder würde zu ähnlich sein, irgendwelche Ideen?
Ich habe die Resursive Version, die gut funktioniert.
public void PreOrderTraversal(Node<T> node)
{
if(node!=null)
{
Console.Write(node.Data);
}
if (node.LeftChild != null)
{
PreOrderTraversal(node.LeftChild);
}
if (node.RightChild != null)
{
PreOrderTraversal(node.RightChild);
}
}
Vielen Dank.













