JAVA

[JAVA] 자바 - 이진트리 구현, 순회 알고리즘 코드

데이25 2020. 10. 27. 17:54

다음과 같은 1~ 15까지 이진트리를 구현하고 

전위 순회 , 중위 순회 , 후위 순회를 구현하였다. 

 

 

탐색 설명

1) 전위순회

  1. 자기 자신 처리

  2. 왼쪽 자식 방문

  3. 오른쪽 자식 방문

2) 중위순회

  1. 왼쪽 자식 방문

  2. 자기 자신 처리

  3. 오른쪽 자식 방문

3) 후위순회

  1. 왼쪽 자식 방문

  2. 오른쪽 자식 방문

  3. 자기 자신 처리

 

코드

import java.util.*;

class BiTree {
    int data;
    BiTree left, right;
    public BiTree(int data) {
        this.data = data;
    }
}
public class Main {
    public static void main(String[] args) {
        int num = 15;
        BiTree nodes[] = new BiTree[num+1];


        for(int i = 1 ; i <= num ; i++ ) {
            BiTree node = new BiTree(i);
            node.left = null;
            node.right = null;
            nodes[i] = node;
        }

        for(int i = 2 ; i <= num ; i++ ) {
            if( i % 2 == 0 ) {
                nodes[i/2].left = nodes[i];
            } else {
                nodes[i/2].right = nodes[i];
            }
        }

        preorder(nodes[1]);
        System.out.println();
        inorder(nodes[1]);
        System.out.println();
        postorder(nodes[1]);


    }

    static void preorder(BiTree ptr) {
        if(ptr != null) {
            System.out.print(ptr.data + " ");
            preorder(ptr.left);
            preorder(ptr.right);
        }
    }

    static void inorder(BiTree ptr) {
        if(ptr != null) {
            inorder(ptr.left);
            System.out.print(ptr.data + " ");
            inorder(ptr.right);
        }
    }

    static void postorder(BiTree ptr) {
        if(ptr != null) {
            postorder(ptr.left);
            postorder(ptr.right);
            System.out.print(ptr.data + " ");
        }
    }

}

 

 

결과 

 

전위 순회 : 1 2 4 8 9 5 10 11 3 6 12 13 7 14 15 
중위 순회 : 8 4 9 2 10 5 11 1 12 6 13 3 14 7 15 
후위 순회 : 8 9 4 10 11 5 2 12 13 6 14 15 7 3 1