본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


트리에는 선회방법이 3가지가 있다.

중위순회(Inorder) Left -> Root -> Right

전위순회(PreOrder) Root -> Left -> Right

후위순위(PostOrder) Left -> Right -> Root


외우기 힘들다면 Root를 기준으로 중위면 Root가 가운데이 있고, 전위라면 Root가 앞에, 후위라면 Root가 뒤에 그리고 무조건 Left 다음 Right인 것을 인지한다면 쉽게 외울 수 있을 것 같다.


Tree 구현


중위 순회 Inorder = Left -> Root -> Right

4 -> 2 -> 5 -> 1 -> 3

전위순회 Preorder = Root -> Left -> Right

1 -> 2 -> 4 -> 5 -> 3

후위순회 Postorder = Left -> Right -> Root

4 -> 5 -> 2 -> 3 -> 1


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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
class Node {
    int data;
    Node left;
    Node right;
}
 
class Tree {
    public Node root;
    
    public void setRoot(Node node) {
        
        this.root = node;
    }
    
    public Node getRoot() {
        
        return root;
    }
    
    public Node createNode(Node left, int data, Node right) {
        Node node = new Node();
        node.data = data;
        node.left = left;
        node.right = right;
        
        return node;
    }
    
    //중위 순회 Inorder = Left -> Root -> Right
    //4 -> 2 -> 5 -> 1 -> 3
    public void inOrder(Node node) {
        if(node != null) {
            inOrder(node.left);
            System.out.println(node.data);
            inOrder(node.right);
        }
    }
    
    //전위순회 Preorder = Root -> Left -> Right
    //1 -> 2 -> 4 -> 5 -> 3
    public void preOrder(Node node) {
        if(node != null) {
            System.out.println(node.data);
            preOrder(node.left);
            preOrder(node.right);
        }
    }
    
    //후위순회 Postorder = Left -> Right -> Root
    //4 -> 5 -> 2 -> 3 -> 1
    public void postOrder(Node node) {
        if(node != null) {
            preOrder(node.left);
            preOrder(node.right);
            System.out.println(node.data);
        }
    }
}
 
public class Main {
    public static void main(String[] args) {
        Tree t = new Tree();
        Node n4 = t.createNode(null4null);
        Node n5 = t.createNode(null5null);
        Node n2 = t.createNode(n4, 2, n5);
        Node n3 = t.createNode(null3null);
        Node n1 = t.createNode(n2, 1, n3);
        
        t.setRoot(n1);
        t.inOrder(t.getRoot());
    }
}