결국 JAVA로 갈아타버린..🍂

강의정리- 이진트리순회(DFS) / 부분집합 구하기(DFS)

FireStone 2022. 3. 7. 19:58

- 이진트리 순회(깊이우선탐색)

public void DFS(Node root){
        if(root == null)
            return;
        else{
            System.out.print(root.data+ " "); // 전위순회 
            DFS(root.lt);
            System.out.print(root.data+ " ");  //중위순회
            DFS(root.rt);
            System.out.print(root.data+ " ");  //후위순회 
        }
    }

 

- 부분집합 구하기

public class Main
{
    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);
        }
    }
    
    // tip: arguments are passed via the field below this editor
    public static void main(String[] args)
    {
        Main T = new Main();
        /*Scanner kb = new Scanner(System.in);
        String str = kb.nextLine();*/
        n = 3;
        ch = new int[n+1];
        T.DFS(1);
        //System.out.print(T.solution(str));
    }
    }