[백준] 이진 검색 트리 - Java

RUNGOAT·2023년 6월 25일
0

Algorithm

목록 보기
10/11

📃 문제

백준 - 이진 검색 트리

📝 풀이

[Java] 이진 트리 클래스
이진 트리 구조 만들기를 참고하여 코드를 작성했다.

  • searchNode에서 node에 저장된 data와 입력값으로 주어진 data를 비교하여 left or right 로 나누어서 저장.
  • node.left or node.right의 null 체크 후 new Node(data)를 할당해준다.

코드

import java.util.*;
import java.io.*;


class Node {
	int data;
	Node left, right;
	
	Node(int data) {
		this.data = data;
	}
}

class Tree {
	Node root;
	
	void createNode(int data) {
		if (root == null) {
			root = new Node(data);
		} else {
			searchNode(root, data);
		}
	}
	
	void searchNode(Node node, int data) {
		if (node.data > data) {
	        if (node.left == null) {
	            node.left = new Node(data);
	        } else {
	        	searchNode(node.left, data);				
	        }
	    } else {
	        if (node.right == null) {
	            node.right = new Node(data);
	        } else {
	        	searchNode(node.right, data);				
	        }
	    }
	}
	
	void postOrder(Node node) {
		if (node != null) {
			postOrder(node.left);
			postOrder(node.right);
			System.out.println(node.data);
		}
	}
}


public class Main {

    public static void main(String[] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	Tree tree = new Tree();
    	String input;
    	while ((input = br.readLine()) != null && !input.isEmpty()) {
    		int data = Integer.parseInt(input);
        	tree.createNode(data);
    	}
    	tree.postOrder(tree.root);
    }
}
profile
📞피드백 너무나 환영

0개의 댓글