ich einen Baum von Knoten in dieser Form haben:Welche Traversal wird die Ausgabe produzieren Ich brauche
Ich brauche den Baum, um zu durchqueren zu können, um die Ausgabe zu erzeugen:
a/b + c
die Knoten als ‚Knoten‘ sind für Struktur und ich weiß, welche Knoten diejenigen sind, welche die richtigen Werte enthalten, die so ausgegeben werden kann:
ein Knoten/b Knoten Knoten + Knoten c Knoten
als wenn die überschüssigen Knoten der Ausgang noch entfernt werden:
a/b + c
Ich glaube, ich brauche eine inOrder Traversal zu implementieren aber ich kämpfe, um etwas richtig zu arbeiten.
edit:
public IEnumerable<Node> PostOrder(Node start, Func<Node, IEnumerable<Node>> getNeighbours)
{
HashSet<Node> visited = new HashSet<Node>();
Stack<Node> stack = new Stack<Node>();
stack.Push(start);
while (stack.Count != 0)
{
Node current = stack.Pop();
visited.Add(current);
yield return current;
IEnumerable<Node> neighbours = getNeighbours(current).Where(node => !visited.Contains(node));
foreach (Node neighbour in neighbours)
{
stack.Push(neighbour);
}
}
}
Jedoch gibt diese die Liste:
Wurzel, Knoten, c, Knoten, +, Knoten, Knoten B, Knoten/Knoten, eine
(geht von links nach rechts)
Sie eine Post-Order Traversal versucht haben? –
@LeoBartkus Ja, ich werde den Algorithmus, den ich versucht habe, zur Frage hinzufügen – cookies