Dev.baelanche

[백준 1991] 트리 순회 본문

Data Structure & Algorithm/PS - JAVA

[백준 1991] 트리 순회

baelanche 2019. 5. 27. 21:01
반응형

 

 

입력이 문자이므로 캐릭터형을 정수형으로 바꾸어 트리를 만들었다.

출력할때만 다시 캐릭터형으로 출력했다.

 

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        sc.nextLine();
        Tree t = new Tree(n);
        while(n-->0) {
            char[] c = sc.nextLine().toCharArray();
            t.setChildren(c[0]-65, c[2]-65, c[4]-65);
        }
        t.preorder(0);
        System.out.println();
        t.inorder(0);
        System.out.println();
        t.postorder(0);
    }
}

class Tree {
    
    int n;
    int parent[];
    int lc[], rc[];
    
    public Tree(int n) {
        this.n = n;
        parent = new int[n];
        lc = new int[n];
        rc = new int[n];
    }
    
    public void setChildren(int p, int l, int r) {
        if(l != -19) parent[l] = p;
        if(r != -19) parent[r] = p;
        if(l != -19) lc[p] = l;
        if(r != -19) rc[p] = r;
    }
    
    public void preorder(int root) {
        System.out.print((char)(root + 65));
        if(lc[root] != 0) preorder(lc[root]);
        if(rc[root] != 0) preorder(rc[root]);
    }
    
    public void inorder(int root) {
        if(lc[root] != 0) inorder(lc[root]);
        System.out.print((char)(root + 65));
        if(rc[root] != 0) inorder(rc[root]);
    }
    
    public void postorder(int root) {
        if(lc[root] != 0) postorder(lc[root]);
        if(rc[root] != 0) postorder(rc[root]);
        System.out.print((char)(root + 65));
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 4803] 트리  (0) 2019.05.27
[백준 11725] 트리의 부모 찾기  (0) 2019.05.27
[백준 2014] 소수의 곱  (0) 2019.05.22
[백준 2075] N번째 큰 수  (0) 2019.05.22
[백준 1715] 카드 정렬하기  (0) 2019.05.22
Comments