2017-02-24 1 views
0

ich einen Baum von Knoten in dieser Form haben:Welche Traversal wird die Ausgabe produzieren Ich brauche

enter image description here

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)

+1

Sie eine Post-Order Traversal versucht haben? –

+0

@LeoBartkus Ja, ich werde den Algorithmus, den ich versucht habe, zur Frage hinzufügen – cookies

Antwort

1

ich dumm wurde ...

Ich muss nur die Ausgabe umkehren.

Nur einer dieser Tage -_-

Verwandte Themen