Post

BFS

๐Ÿ”ต ThingsILearned

โœ”๏ธ BFS๋Š” QUQUE๋กœ ์ž‘๋™ํ•จ.

Queue๋Š” Last in First out.

โœ… BFS ํƒ์ƒ‰ํ•˜๊ธฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class Node{
    int data;
    Node lt, rt;

    public Node(int value){
        data= value;
        lt= rt= null;
    }
}
class Main {
    Node root;
    public void BFS(Node root){
        Queue<Node> Q= new LinkedList<>();
        Q.offer(root);
        int level=0;

        while(!Q.isEmpty()){
            int len= Q.size();
            System.out.print(level+ ": ");
            for(int i=0; i<len; i++){
                Node cur= Q.poll();
                System.out.print(cur.data+ " ");
                if(cur.lt != null) Q.offer(cur.lt);
                if(cur.rt != null) Q.offer(cur.rt);
            }
            level++;
            System.out.println();
        }
    }
    public static void main(String[] args) {
        Main tree = new Main();
        tree.root= new Node(1);
        tree.root.lt= new Node(2);
        tree.root.rt= new Node(3);
        tree.root.lt.lt= new Node(4);
        tree.root.lt.rt= new Node(5);
        tree.root.rt.lt= new Node(6);
        tree.root.rt.rt= new Node(7);
        tree.BFS(tree.root);
    }
}



//โญ๏ธoutput:
0: 1
1: 2 3
2: 4 5 6 7

(14) BFS๋Š” Queue๋กœ ์ž‘๋™ํ•˜๋ฏ€๋กœ linked list์ƒ์„ฑ
๐ŸŸ  ์ด๋•Œ linked list์˜ ์ œ๋„ˆ๋ฆญ ํƒ€์ž… Node๋กœ ์ฃผ๋Š” ๊ฒƒ ๊ธฐ์–ตํ•˜๊ธฐ
(15) ๋จผ์ € root๋ฅผ Queue์— offerํ•˜๊ณ 
(16) ์ง€๊ธˆ ์–ด๋–ค level์— ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด level ๋งŒ๋“ฆ. ์ฒซ ๋ ˆ๋ฒจ์€ 0.
(18) Queue์— ๋ชจ๋“  ์š”์†Œ๊ฐ€ poll๋˜์–ด ๋น„์šฐ๊ฒŒ ๋˜๋ฉด ๋ฉˆ์ถ”๊ธฐ
(19) Q.size()๋งŒํผ for๋Œ๋ฉด์„œ ๊ทธ ๋ ˆ๋ฒจ์— ์žˆ๋Š” ์š”์†Œ๋“ค ์ถœ๋ ฅํ•ด์•ผ ํ•จ
๐ŸŸ  Q.size() ๋งŒํผ ๋Œ์•„์•ผ ํ•˜๋‹ˆ๊นŒ Q.size()๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜ ํ•„์š”, len
(21) ํ˜„์žฌ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” node๋ฅผ pollํ•ด์„œ ํ”„๋ฆฐํŠธ
(23) ๊ทธ๋ฆฌ๊ณ  ๋ฐฉ๊ธˆ pollํ•œ ๋…ธ๋“œ์˜ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์ž์‹์„ ํƒ์ƒ‰ํ•ด์„œ Queue์— offer
(24, 25) ์ฃผ์˜ํ•  ์ ์€ ๋…ธ๋“œ์˜ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์ž์‹์ด null์ด๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ž„!
์ž์‹์ด null์ด๋ฉด ๊ฐ€์žฅ ๋ง๋‹จ ๋…ธ๋“œ๋ผ๋Š” ๊ฒƒ์ด๋‹ˆ๊นŒ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด ์—†์Œ.
(27) ์ด์ œ ์ด level์€ ๋‹ค ํƒ์ƒ‰ํ–ˆ์œผ๋‹ˆ ๋‹ค์Œ level๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•ด level++
(28) ๋ณด๊ธฐ ํŽธํ•˜๋ผ๊ณ  ํ•œ ์ค„ ๋„์›€

แ„แ…ฉแ„ƒแ…ตแ†ผแ„€แ…ฉแ†ผแ„Žแ…ขแ†จ-62

This post is licensed under CC BY 4.0 by the author.