Algorithm/백준 알고리즘

백준_5639 이진 검색 트리(자바) / 트리

미스터로즈 2021. 8. 10. 09:25

시간 & 메모리 제한

 

문제

 

입력&출력

 

문제풀이

package com.Back;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Back_5639 {
	
	static StringBuilder sb = new StringBuilder();
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Node root = new Node(Integer.parseInt(br.readLine()));
		
		String tmp;
		
		while((tmp = br.readLine()) != null) {
			Node next = new Node(Integer.parseInt(tmp));
			Insert(root,next);
		}
		
		postOrder(root);
		System.out.println(sb);
	}
	
	private static void postOrder(Node root) {
		if(root.left != null) postOrder(root.left);
		if(root.right != null) postOrder(root.right);
		sb.append(root.num+"\n");
	}

	private static void Insert(Node root, Node next) {
		if(next.num<root.num) {
			if(root.left !=null) {
				Insert(root.left, next);
			}else {
				root.left = next;
			}
		}else {
			if(root.right != null) {
				Insert(root.right, next);
			}else {
				root.right = next;
			}
		}
	}

	static class Node{
		int num;
		Node left;
		Node right;
		public Node(int num) {
			this.num = num;
		}
	}
}

- 트리에 관련된 문제입니다.

- 먼저 Node에 관한 클래스를 선언을 해줬습니다.

- 입력값이 없을 때까지 값을 받아옵니다.

- 받아온 값을 기준으로 이진트리를 만들어 줍니다.

- 만들어진 이진 트리를 후위 순회를 통해서 값을 읽어옵니다.