트리(Tree)
- 노드와 링크로 구성된 자료구조
- 계층적 구조를 나타낼 때 사용
ex) 폴더 구조, 조직도, 가계도, etc.
트리의 특징
- 하나의 노드에서 다른 노드로 이동하는 경로는 유일하다.
- 노드가 N개인 트리의 Edge의 수는 N-1개 이다.
- Cycle이 존재하지 않는다. (Acyclic)
- 모든 노드는 서로 연결되어 있다.
- 하나의 Edge를 끊으면 2개의 Sub-Tree로 분리된다.
이진 트리 종류
1. 이진 트리(Binary Tree)
- 각 노드는 최대 2개의 자식을 가질 수 있다.
- 자식 노드는 좌우를 구분한다.
2. 포화 이진 트리(Perfect Binary Tree) : 모든 레벨에서 노드들이 꽉 채워져 있는 트리
3. 완전 이진 트리(Complete Binary Tree) : 마지막 레벨을 제외하고 노드들이 모두 채워져 있는 트리
4. 정 이진 트리(Full Binary Tree) : 모든 노드가 0개 또는 2개의 자식 노드를 갖는 트리
5. 편향 트리(Skewed Binary Tree) = 사향 트리 : 한쪽으로 기울어진 트리
6.균형 이진 트리(Balanced Binary Tree) : 모든 노드의 좌우 서브 트리 높이가 1이상 차이 나지 않는 트리
이진 트리 특징
- 포화 이진 트리의 높이가 h일 때, 노드의 수는 (2^h + 1) - 1개
- 포화(or 완전) 이진트리의 노드가 N개 일 때, 높이는 log N
- 이진 트리의 노드가 N개 일 때, 최대 가능 높이는 N
트리 순회 방식
- 모든 노드를 빠뜨리거나 중복하지 않고 방문하는 연산
- 순회의 4가지 종류
- 전위 순회, 중위 순회, 후위 순회 → DFS
- 레벨 순회 → BFS
1. 전위 순회(Preorder Traversal)
- 방문 순서 : 현재 노드 → 왼쪽 노드 → 오른쪽 노드
2. 중위 순회(Inorder Traversal)
- 방문 순서 : 왼쪽 노드 → 현재 노드 → 오른쪽 노드
3. 후위 순회(Postorder Traversal)
- 방문 순서 : 왼쪽 노드 → 오른쪽 노드 → 현재 노드
4. 레벨 순회(Levelorder Traversal)
- 방문 순서 : 위쪽 레벨 부터 왼쪽 노드 → 오른쪽 노드
이진 트리 구현
- 배열
- 레벨 순회 순으로 배열에 구성
- 연결 리스트
- 값과 간선을 관리하기 위한 노드로 연결리스트 구성
- 값을 넣을 공간 1개, 왼쪽 노드를 가리킬 공간 1개, 오른쪽 노드를 가리킬 공간 1
'Computer Science > 자료구조' 카테고리의 다른 글
[자료구조] 이진 탐색 트리 (Binary Search Tree) (0) | 2023.06.03 |
---|---|
[자료구조] 힙(Heap) (0) | 2023.05.27 |
[자료구조] 스택(Stack) & 큐(Queue) (0) | 2023.05.27 |
[자료구조] Array vs ArrayList vs LinkedList (0) | 2023.05.20 |
[자료구조] 연결리스트(LinkedList) (0) | 2023.05.20 |