0
나는이 양식의 노드의 트리가 필요합니다나는
I 출력 생산하기 위해 트리를 통과 할 수 있어야합니다
:
을 A/B + C
'노드'라고 표시된 노드가 구조이며, I 출력이 될 수 있도록 올바른 값을 포함하는 것들을있는 노드 알고
a를 초과하는 노드가 출력이 계속 될 것입니다 제거 할 때와 같은 노드/B 노드 노드 + 노드 C 노드
:
A/B + C 내가이 중위 순회를 구현해야한다고 생각
그러나 나는 제대로 작동하기 위해 무엇인가 얻으려고 애 쓰고 있습니다.
편집 :
루트, 노드, C, 노드, +, 노드, 노드 B, 노드, /, 노드,
: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);
}
}
}
그러나이 목록을 반환
은 ...
순회 주문을 시도 했습니까? –
@LeoBartkus 예, 질문에 사용하려고했던 알고리즘을 추가하겠습니다. – cookies