N-ary Tree

YJ·2025년 5월 3일

algorithm

목록 보기
7/16

Binary Tree 때 배웠던 순회 중 In-order traverse(중위 순회)에 대한 정의는 없다.

(1) Preorder Traversal: A->B->C->E->F->D->G
(2) Postorder Traversal: B->E->F->C->G->D->A
(3) Level-order Traversal: A->B->C->D->E->F->G

Preorder Iteration

public List<Integer> preorder(Node root) {
	LinkedList<Node> stack = new LinkedList<>();
    LinkedList<Integer> output = new LinkedList<>();
    if (root == null) {
      return output;
    }

    stack.add(root);
    while (!stack.isEmpty()) {
		Node node = stack.pollLast();
		output.add(node.val);
		Collections.reverse(node.children);
		for (Node item : node.children) {
			stack.add(item);
		}
	}
	return output;
}

루트부터 시작하여 각 반복마다 현재 노드를 스택에서 팝(pop)하고 자식 노드를 푸시(push)한다. 구현된 전략에서는 노드를 Top->Bottom, Left->Right 순서로 출력 리스트에 푸시하는데, 이는 자연스럽게 전위 순회(preorder traversal)를 재현합니다.

profile
Hello

0개의 댓글