Deep_Dev
article thumbnail

โœ… ์ด์ง„ ํŠธ๋ฆฌ ์ˆœํšŒ

  • ์ด์ง„ ํŠธ๋ฆฌ๋Š” ๋ถ„ํ•  ์ •๋ณต ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋น ๋ฅธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
  • ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์ „์œ„, ์ค‘์œ„, ํ•˜์œ„๋กœ ๋‚˜๋ˆˆ๋‹ค

 

 

์ „์œ„

  • Node๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ€๋ชจ -> ์™ผ์ชฝ ์ž์‹ -> ์˜ค๋ฅธ์ชฝ ์ž์‹
  • ์ž์‹์ด ์—ฌ๋Ÿฟ์ผ ๊ฒฝ์šฐ ๋๊นŒ์ง€ ํŒŒ๊ณ ๋“ ๋‹ค.
  • 1 2 4 5 3 6 7

์ค‘์œ„

  • Node๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ ์ž์‹ -> ๋ถ€๋ชจ -> ์˜ค๋ฅธ์ชฝ ์ž์‹
  • ์™ผ์ชฝ ๋๊นŒ์ง€ ๋„๋‹ฌํ•˜์—ฌ ๋ถ€๋ชจ๋ฅผ ์ง€๋‚˜ ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰
  • 4 2 5 1 6 3 7

ํ›„์œ„

  • ์™ผ์ชฝ ์ž์‹ -> ์˜ค๋ฅธ์ชฝ ์ž์‹ -> ๋ถ€๋ชจ ๋ฐฉํ–ฅ
  • ์ž์‹์„ ๋จผ์ € ํƒ์ƒ‰ ํ›„ ๋ถ€๋ชจ์—๊ฒŒ ๊ฐ„๋‹ค.
  • 4 5 2 6 7 3 1

 

>  ์ฝ”๋“œ ๊ตฌํ˜„

๊ตฌํ˜„๋œ ์ฝ”๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ, print๋ฌธ์˜ ์ˆœ์„œ๊ฐ€ ์–ด๋””๋ƒ์— ๋”ฐ๋ผ 

์ „์œ„, ์ค‘์œ„, ํ›„์œ„๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

 

import java.util.*;

Class Node{
	int data;
    Node lt,rt;
    public Node(int val){
    	data=val;
        lt=rt=null;
    }
}

public class Main{
	Node root;
    public void DFS(Node root){
    	if(root==null) return; // ๋ง๋‹จ ๋…ธ๋“œ๋Š” ๊ฐ’์ด ์—†์Œ(null), ์ฆ‰ ๋ง๋‹จ ๋…ธ๋“œ์— ๋„์ฐฉํ•˜๋ฉด ์ข…๋ฃŒ
        else{
        	System.out.print(root.data+" "); // ์ „์œ„์ˆœํšŒ
        	DFS(root.lt); // ํŠธ๋ฆฌ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๊ฐ’์„ ์ „๋‹ฌ
            // System.out.print(root.data+" "); ์ค‘์œ„ ์ˆœํšŒ
            DFS(root.rt); // ํŠธ๋ฆฌ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ’์„ ์ „๋‹ฌ
            // System.out.print(root.data+" ");ํ›„์œ„ ์ˆœํšŒ
        }
    }
    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.rott.lt.rt=new Node(5);
        tree.root.rt.lt=new Node(6);
        tree.root.rt.rt=new Node(7);
    }
}

 

 

 

DFS๋กœ ๋ถ€๋ถ„์ง‘ํ•ฉ ๊ตฌํ•˜๊ธฐ

 

 

 

 

public class Solution {
    static int n;
    static int[] ch;
    public void DFS(int L){
        if(L==n+1){
            String tmp="";
            for(int i=1; i<=n; i++){
                if(ch[i]==1)
                    tmp+=(i+" ");
            }
            if(tmp.length()>0) System.out.println(tmp);
        }else{
            ch[L]=1;
            DFS(L+1);
            ch[L]=0;
            DFS(L+1);
        }
    }
    public static void main(String[] args) {
        Solution T=new Solution();
        n=3;
        ch=new int[n+1];
        T.DFS(1);
    }
}

 

 

 

 

 ๋ง๋‹จ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฐ€์žฅ ์งง์€ ๊ฒฝ๋กœ

์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์ด์ง„ํŠธ๋ฆฌ์—์„œ ๋ฃจํŠธ ๋…ธ๋“œ 1์—์„œ ๋ง๋‹จ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ธธ์ด ์ค‘ ๊ฐ€์žฅ ์งง์€ ๊ธธ์ด๋ฅผ
๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.
๊ฐ ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋Š” ๋ฃจํŠธ๋…ธ๋“œ์—์„œ ๋ง๋‹จ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€๋Š”๋ฐ ์ด๋™ํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ฆ‰ ๊ฐ„์„ (์—์ง€)์˜ ๊ฐœ์ˆ˜๋ฅผ
๊ธธ์ด๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๊ฐ€์žฅ ์งง์€ ๊ธธ์ด๋Š” 3๋ฒˆ ๋…ธ๋Š๊นŒ์ง€์˜ ๊ธธ์ด์ธ 1์ด๋‹ค.

 

 

 

import java.util.*;
class Node{ 
    int data; 
    Node lt, rt; 
    public Node(int val) { 
        data=val; 
        lt=rt=null; 
    } 
} 
  
public class Main{ 
    Node root; 
    public int DFS(int L, Node root){ 
        // ๋ง๋‹จ ๋…ธ๋“œ
        if(root.lt==null && root.rt==null) return L;
        // ์ž์‹์ด 1๊ฐœ ๋ฐ–์— ์—†์œผ๋ฉด ์—๋Ÿฌ ๋ฐœ์ƒ
        else return Math.min(DFS(L+1, root.lt), DFS(L+1, root.rt));
    } 
  
    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); 
        System.out.println(tree.DFS(0, tree.root)); 
    } 
}