250413 트리 순회

Jongleee·2025년 4월 13일
0

TIL

목록 보기
867/970
public static void main(String[] args) throws IOException {
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	int nodeCount = Integer.parseInt(br.readLine());

	Node head = new Node('A');

	for (int i = 0; i < nodeCount; i++) {
		StringTokenizer st = new StringTokenizer(br.readLine());
		char root = st.nextToken().charAt(0);
		char left = st.nextToken().charAt(0);
		char right = st.nextToken().charAt(0);
		insertNode(head, root, left, right);
	}

	StringBuilder sb = new StringBuilder();
	traversePreOrder(head, sb);
	sb.append('\n');
	traverseInOrder(head, sb);
	sb.append('\n');
	traversePostOrder(head, sb);
	System.out.println(sb);
}

private static class Node {
	char value;
	Node left;
	Node right;

	Node(char value) {
		this.value = value;
	}
}

private static void insertNode(Node current, char root, char left, char right) {
	if (current == null)
		return;

	if (current.value == root) {
		current.left = (left == '.') ? null : new Node(left);
		current.right = (right == '.') ? null : new Node(right);
	} else {
		insertNode(current.left, root, left, right);
		insertNode(current.right, root, left, right);
	}
}

private static void traversePreOrder(Node node, StringBuilder sb) {
	if (node == null)
		return;
	sb.append(node.value);
	traversePreOrder(node.left, sb);
	traversePreOrder(node.right, sb);
}

private static void traverseInOrder(Node node, StringBuilder sb) {
	if (node == null)
		return;
	traverseInOrder(node.left, sb);
	sb.append(node.value);
	traverseInOrder(node.right, sb);
}

private static void traversePostOrder(Node node, StringBuilder sb) {
	if (node == null)
		return;
	traversePostOrder(node.left, sb);
	traversePostOrder(node.right, sb);
	sb.append(node.value);
}

출처:https://www.acmicpc.net/problem/1991

0개의 댓글