2017-02-24 75 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

我太傻了......

我只需要反转输出。

只是其中之一-_-