2017-02-24 54 views
0

我有節點的樹以這種形式:什麼遍歷時會產生輸出,我需要

enter image description here

我需要能夠遍歷樹以產生輸出:

A/b + C

標記爲「節點」的節點是爲結構和我知道哪些節點是含有正確的值的那些這樣的輸出可以是:

一個節點/ B節點node +節點c節點

時除去過量的節點的輸出將仍是如:

A/B + C

我認爲需要實現一個序遍歷但我正在努力獲得正確的工作。

編輯:

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); 
     } 
    } 
} 

然而,這將返回列表:

根,節點,C,節點,+,節點,節點,B,節點,/,節點,

(左去右)

+1

您是否嘗試過後續遍歷? –

+0

@LeoBartkus是的,我會將我嘗試使用的算法添加到問題中 – cookies

回答

1

我太傻了......

我只需要反轉輸出。

只是其中之一-_-

相關問題