-
Full, Perfect, Complete ? 이진트리의 형태Data Structure 2021. 1. 12. 23:14
이진트리에는 여러 종류가 있다
트리 중에서도 가장 많이 사용하는 것이 이진트리이지만, 이진 트리들에도 명칭이 존재한다
Binary Tree의 종류에는
1️⃣Full Binary Tree 2️⃣Perfect Binary Tree 3️⃣Complete Binary Tree
가 있다
세 가지 트리를 한글로 번역하면...
그렇다
트리들의 이름만으로는 분간이 안 간다
그럼 세 가지 트리는 어떤 특징을 가지고 있고, 어떻게 다를까?
1️⃣ Full Binary Tree
full binary tree는 모든 node의 child가 2개 or 0개인 트리를 말한다.
즉, leaf node가 아닌 node는 child를 두 개 가져야만 한다는 뜻이다 😄
그림의 오른쪽 트리에서, '2'와 '4'는 child를 하나씩 가졌기 때문에 full binary tree가 아니다.
2️⃣ Perfect Binary Tree
perfect binary tree는 full binary tree + 모든 leaf node의 depth가 같은 트리를 말한다.
위의 그림을 보며 가득 찬 이진트리라고 생각하면 이해가 쉽다
perfect binary tree는 가장 깊은 depth의 node들은 child가 없고, 다른 모든 node들은 두 개의 child를 가진다.
3️⃣ Complete Binary Tree
complete binary tree의 depth가 d라고 할 때, depth가 d-1까지는 perfect binary tree이면서, depth가 d인 node(제일 아래 층 node들)은 왼쪽부터 오른쪽의 order대로 node가 채워져 있는 트리를 말한다.
즉, 중간의 순서를 건너뛰고 다음 node를 채울 순 없다.
왼쪽의 그림은 위와 같은 정의를 만족하지만, 오른쪽 그림은 5, 1 다음에 4의 left child node가 채워지지 않고 right child node가 생겼기 때문에 complete binary tree가 아니다.
'Data Structure' 카테고리의 다른 글
Array와 Linked List의 차이점 (0) 2021.01.31 % 연산을 이용한 Circular Array 구현 및 응용 (0) 2021.01.30 ADT Stack의 정의와 연산 구현 (create, push, pop, top, empty) (0) 2021.01.11 모든 정점을 최소 비용으로 연결하는 MST - Minimum Spanning Tre (0) 2020.12.17 자료구조 Heap(힙)이란? 기본 연산과 HeapSort, Heapify에 대해 (0) 2020.10.22