JAVA/알고리즘

BFS(레벨탐색) 예제

lovineff 2021. 6. 16. 14:19
public class Question7 {
    private static class Node{
        int data;
        Node lt, rt;

        public Node(int val){
            this.data = val;
            lt = rt = null;
        }
    }

    public static void main(String[] args) {
        Node root = new Node(1);
        root.lt = new Node(2);
        root.rt = new Node(3);
        root.lt.lt = new Node(4);
        root.lt.rt = new Node(5);
        root.rt.lt = new Node(6);
        root.rt.rt = new Node(7);
        solutionBFS(root);
    }

    private static void solutionBFS(Node root) {
        Queue<Node> queue = new LinkedList<>();

        queue.offer(root);
        int level = 0;

        int len = 0;
        while(!queue.isEmpty()){
            len = queue.size();
            System.out.print(level + " : ");

            for (int i = 0; i < len; i++) {
                Node currentNode = queue.poll();
                System.out.print(currentNode.data + " ");

                if(currentNode.lt != null){
                    queue.offer(currentNode.lt);
                }

                if (currentNode.rt != null) {
                    queue.offer(currentNode.rt);
                }
            }

            level++;
            System.out.println("");
        }
    }
}

'JAVA > 알고리즘' 카테고리의 다른 글

노드 최단거리 (DFS, BFS)  (0) 2021.06.22
피보나치 수열 (반복문, DFS)  (0) 2021.06.09
팩토리얼 (반복문, DFS)  (0) 2021.06.09
2진수 변환 (반복문, 재귀함수)  (0) 2021.06.09
자연수 출력 (반복문, 재귀함수)  (0) 2021.06.09