나무 숲

이진 트리 (Binary Tree) - 소개 본문

Career/알고리즘 · 자료구조

이진 트리 (Binary Tree) - 소개

wood.forest 2016. 9. 6. 12:13

* 책 열혈강의 + 인터넷


트리 Tree

비선형 자료구조

마치 조직도같은 모양!






용어


Node 노드 : 데이터를 저장하는 각각의 요소

Root Node 루트 노드 : 트리 구조의 최상위 노드

Terminal Node 단말 노드 : 아래로 다른 노드가 연결되어 있지 않은 노드

Internal Node 내부 노드 : 단말 노드를 제외한 노드

Edge 간선 : 노드를 잇는 선






관계

Parent 부모 : 자식 노드를 가진다

Child 자식 : 부모 노드를 가진다

Sibling 형제 : 같은 부모로부터 형제 노드를 가진다

(위 그림에서는 같은 색깔끼리 관계를 형성)

Level 레벨 : 트리의 가장 위에서부터 (0) 층별로 매겨진 숫자

Height/Depth 높이/깊이 : 트리의 최고 레벨. 위 그림에서는 2


Degree 차수 : 각 노드에서 뻗어나온 가지의 수

트리의 Degree? 노드들의 차수 중 가장 큰 수.








이진 트리 Binary Tree

조건

* 루트 노드를 중심으로 두 개의 서브 트리로 나누어진다

* 나누어진 두 서브 트리도 모두 이진 트리

재귀적인 조건임을 알 수 있다.


위 그림에서 가장 오른쪽은 이진 트리가 아니다. (두 개의 서브 트리로 나누어지지 않는다)

왼쪽 두 트리의 경우 루트 노드에서부터 노드 하나와 공집합 노드 하나로 나누어진다. 

노드가 존재할 수 있는 곳에 존재하지 않을 때 (보이지 않는)공집합 노드가 존재한다.

단말 노드의 경우에도 하위에 공집합이 존재하는 것으로 간주하여 단말 노드 자체도 이진 트리로 인정한다.






포화 이진 트리Full Binary Tree & 완전 이진 트리 Complete Binary Tree


포화 이진 트리

* 모든 레벹이 가득 차 있다.



완전 이진 트리

* 빈틈 없이 노드가 채워져 있다.

노드는 위에서 아래로, 왼쪽에서 오른쪽으로 채워진다.




포화 이진 트리는 완전 이진 트리이다.

완전 이진 트리는 포화 이진 트리 일수도, 아닐수도 있다.








순회 Traversal

▲ 전위 순회 Preorder Traversal 루트 노드를 먼저 방문


▲ 중위 순회 Inorder Traversal 루트 노드를 중간에 방문


▲ 후위 순회 Postorder Traversal 루트 노드를 마지막에 방문

728x90
반응형

'Career > 알고리즘 · 자료구조' 카테고리의 다른 글

[C++ STL] #include<stack>  (0) 2017.01.08
[C] 입출력 관련  (0) 2016.09.07
[파이썬] 배열/리스트를 연결해서 출력하기  (1) 2016.08.30
큐 (Queue)  (0) 2016.08.22
스택 (Stack)  (0) 2016.08.18
Comments