알고리즘 구현 - Binary Tree Traversals

tae_in·2022년 8월 30일
0

알고리즘구현

목록 보기
1/1

목표

Tree에서 데이터를 가져오는 방법인 Incorder, Preorder, Postorder 구현

코드

package Category;


class Node { // 이진트리의 노드는 data와 왼쪽 오른쪽 2개의 자식노드로 구성

    int data;
    Node left;
    Node right;
}
class Tree { 

    public Node root; 

    public void setRoot(Node node) {
        root = node;
    }

    public Node getRoot() {
        return root;
    }

    public Node makeNode(Node left, int data, Node right) { // 새로운 노드 추가하는 메서드
        Node node = new Node();
        node.data = data;
        node.left = left;
        node.right = right;
        return node;
    }

    public void inorder(Node node) {

        if (node != null) { // 새로운 노드를 만들 때 Node타입으로 객체를 생성하고 그 객체의 주소를 참조변수 node에 넣는다. 그러므로 node가 null이라는 것은 만든 노드가 없다는 거를 의미한다. 
        					// 즉 이 코드에서 n1, n2, n3, n4, n5의 참조변수가 inorder의 매개변수로 오지 않으면 다 null이다. 
            inorder(node.left);
            System.out.println(node.data);
            inorder(node.right);
        }
    }

    public void preorder(Node node) {

        if (node != null) {
            System.out.println(node.data);
            preorder(node.left);
            preorder(node.right);
        }
    }

    public void postorder(Node node) {
        if (node != null) {
            postorder(node.left);
            postorder(node.right);
            System.out.println(node.data);
        }
    }
}
public class Test {

    public static void main(String[] args) {

        Tree t = new Tree();
        Node n4 = t.makeNode(null, 4, null);
        Node n5 = t.makeNode(null, 5, null);
        Node n2 = t.makeNode(n4, 2, n5);
        Node n3 = t.makeNode(null, 3, null);
        Node n1 = t.makeNode(n2, 1, n3);
        t.setRoot(n1);
        System.out.println("inorder 결과");
        t.inorder(t.getRoot());
        System.out.println("preorder 결과");
        t.preorder(t.getRoot());
        System.out.println("postorder 결과");
        t.postorder(t.getRoot());
    }
}


밑에 결과가 맞는지 보다 편하게 확인하기 위해 코드에서 생성한 트리를 그림으로 그려보았다.

결과

inorder 결과
5
6
13
10
11
preorder 결과
10
6
5
13
11
postorder 결과
5
13
6
11
10

0개의 댓글