본문 바로가기
자료구조

[자료 구조] 트리

by develop growth 2022. 2. 23.

트리


개요

 - 트리의 개념과 종류를 알아본다. 


기본 개념

 - 트리란 노드로 이루어진 자료구조를 말한다. 

 - 트리는 다음과 같은 조건을 갖는다. 

  1. 하나의 루트 노드를 갖는다. 

  2. 루트 노드와 자식 노드들은 0개 이상의 자식 노드를 갖는다. 

  3. 사이클이 존재하지 않는다. (사이클이란 자식노드들을 통해서 자신의 노드로 돌아올 수 있는 순환 구조를 말한다.)


이진 트리 

 - 각 노드가 최대 두 개의 자식을 갖는 트리

이진 트리


이진 트리의 종류

1. 이진 탐색 트리

 - 왼쪽 자식 노드의 값이 부모 노드의 값보다 작거나 같고, 부모 노드의 값은 오른쪽 자식 노드의 값보다 작은 이진 트리

이진 탐색 트리

 - 위의 경우에는 모든 왼쪽 자식 노드의 값이 부모 노드의 값보다 작거나 같고, 부모 노드의 값은 오른쪽 자식 노드의 값보다 작기 때문에 이진 탐색 트리이다. 

이진 탐색 트리가 아닌 경우

 - 위의 경우에는 왼쪽 자식의 노드값이 부모 노드의 값보다 크기때문에 이진 탐색 트리가 아니다. (빨간색 박스 내부)

 

2. 완전 이진 트리

 - 트리 모든 level에서 자식 노드가 2개인 이진 트리를 말한다. 단, 마지막 level은 모든 자식 노드가 2개가 아니여도 되지만, 왼쪽부터 자식노드가 할당되어 있어야 한다. 

완전 이진 트리

 - 위의 경우는 모든 level에서 자식 노드가 2개이고, 마지막 level의 경우 왼쪽부터 채워져 있기 때문에 완전 이진 트리이다.

완전 이진 트리가 아닌 경우

 - 위의 경우는 마지막 level을 제외한 모든 level에서 자식 노드가 2개이지만, 마지막 level에서 왼쪽부터 채워져 있지 않기 때문에 완전 이진 트리가 아니다. 

 

3. 전 이진 트리

- 모든 노드의 자식 노드의 개수가 0 또는 2인 이진 트리

전 이진 트리

4. 포화 이진 트리

 - 전 이진 트리이면서 완전 이진 트리인 경우, 단 마지막 level의 노드의 개수는 최대가 되어야 한다. 

   ( 포화 이진 트리의 노드 개수는 K^(2-1)

포화 이진 트리

 


이진 트리의 순회

 1. 전위 순회

  - 자식 노드보다 현재 노드를 먼저 방문하는 방법

  - 이 방법은 루트 노드를 가장 먼저 방문한다. 

  - 전위 순회의 수도 코드와 방문 순서는 다음과 같다. 

void preOrderTraversal(Node node){
    if( node != null ){
        visit(node);
        preOrderTraversal(node.left);
        preOrderTraversal(node.right);
    }
}

전위 순회 방식에 따른 노드 방문 순서

 2. 중위 순회

 - 왼쪽 자식 노드, 현재 노드, 오른쪽 가지 순서 노드를 방문하는 방법

 - 이 방식은 가장 하위 왼쪽의 자식 노드를 먼저 방문한다. 이진 탐색 트리를 이 방식으로 순회하면 오름차순으로 방문한다. 

 - 중위 순회의 수도 코드와 방문 순서는 다음과 같다. 

void preOrderTraversal(Node node){
    if( node != null ){
        preOrderTraversal(node.left);
        visit(node);
        preOrderTraversal(node.right);
    }
}

중위 순회에 방식에 따른 노드 방문 순서

 3. 후위 순회 

 - 모든 자식 노드들을 먼저 방문한 뒤 마지막에 현재 노드를 방문한다. 

 - 루트 노드를 가장 나중에 방문하는 방식 

 - 후위 순회의 수도 코드와 방문 순서는 다음과 같다. 

void preOrderTraversal(Node node){
    if( node != null ){
        preOrderTraversal(node.left);
        preOrderTraversal(node.right);
        visit(node);
    }
}

후위 순위 방식에 따른 노드 방문 순서

 

'자료구조' 카테고리의 다른 글

[자료 구조] 트라이(접두사 트리)  (0) 2022.02.24

댓글