我有一个这种形式的节点树:
我需要能够遍历树以产生输出:
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
(从左到右)
答案 0 :(得分:1)
我是傻瓜......
我只需要反转输出。
只有其中一天-_-