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

 

1991번: 트리 순회

첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파

www.acmicpc.net

 

이진트리를 만들고 전위순회, 중위순회, 후위순회를 하면 되는 코드입니다.

 

 

코드입니다.

import java.util.ArrayList;
import java.util.Scanner;
public class Main {

	static Node root = new Node();
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		root.index = "A";
		int N = sc.nextInt();
		
		
		for(int i=0;i<N;i++) {
			String parent = sc.next();
			String left = sc.next();
			String right = sc.next();

			addNode(root, parent, left, right);
			
		}
		preorder(root);
		System.out.println();
		midorder(root);
		System.out.println();
		postorder(root);
	}
	
	static void addNode(Node temp, String parent, String leftchild, String rightchild) {
		
		if(temp.index.equals(parent)) {
			if(!leftchild.equals(".")) {
				temp.left = new Node(leftchild);
			}
			if(!rightchild.equals(".")) {
				temp.right = new Node(rightchild);
			}
		}else {
			if(temp.left != null) addNode(temp.left, parent, leftchild, rightchild);
			if(temp.right != null) addNode(temp.right, parent, leftchild, rightchild);
		}
		
		return ;
	}
	
	static void preorder(Node start) {
		if(start == null) return ;
		System.out.print(start.index);
		preorder(start.left);
		preorder(start.right);
		
	}
	static void midorder(Node start) {
		if(start == null) return ;
		
		midorder(start.left);
		System.out.print(start.index);
		midorder(start.right);
		
	}
	static void postorder(Node start) {
		if(start == null) return ;
		postorder(start.left);
		postorder(start.right);
		System.out.print(start.index);
	}
	
	static class Node{
		String index;
		Node left;
		Node right;
		Node(){
			
		}
		Node(String index){
			this.index = index;
		}
		
	}
}

+ Recent posts