什么遍历将产生我需要的输出

时间:2017-02-24 16:42:17

标签: c# tree nodes traversal inorder

我有一个这种形式的节点树:

enter image description here

我需要能够遍历树以产生输出:

a / b + c

标有节点'的节点是结构,我知道哪些节点是包含正确值的节点,因此输出可以是:

节点/ b节点节点+节点c节点

当删除多余节点时,输出仍为:

a / b + c

我认为我需要实施InOrder遍历,但我正努力争取任何正常工作。

修改

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

但是这会返回列表:

Root,node,c,node,+,node,node,b,node,/,node,a

(从左到右)

1 个答案:

答案 0 :(得分:1)

我是傻瓜......

我只需要反转输出。

只有其中一天-_-