트리
트리는 노드로 이루어진 자료구조로 스택이나 큐와 같은 선형 구조가 아닌 비선형 자료구조이다.
트리는 계층적 관계를 표현하는 자료구조이다.
트리 특징

- 트리는 하나의 루트 노드를 갖는다.
- 루트 노드는 0개 이상의 자식 노드를 갖는다.
- 자식 노드 또한 0개 이상의 자식 노드를 갖는다.
- 노드(Node)들과 노드들을 연결하는 간선(Edge)들로 구성되어 있다.
- 트리에는 사이클(cycle)이 존재할 수 없다.
- 사이클: 시작 노드에서 출발해 다른 노드를 거쳐 다시 시작 노드로 돌아올 수 있다면 사이클이 존재한다고 한다.
- 트리는 사이클(cycle)이 없는 하나의 연결 그래프(Connected Graph)라고 할 수 있다.
- 트리의 노드는 self-loop가 존재 해서는 안된다.
- N개의 노드를 갖는 트리는 항상 N-1 개의 간선(edge)을 갖는다.
- 모든 자식 노드는 한 개의 부모 노드만을 갖는다.
완전 이진트리, 전 이진트리, 포화 이진트리
- 완전 이진트리(Complete Binary Tree)
- 완전 이진트리는 마지막 레벨을 제외 하고 모든 레벨이 완전히 채워져 있다.
- 마지막 레벨은 꽉 차 있지 않아도 되지만, 노드가 왼쪽에서 오른쪽으로 채워져야 한다.
- 마지막 레벨 h에서 1~2h-1 개의 노드를 가질 수 있다.
- 완전 이진 트리는 배열을 사용해 효율적으로 표현 가능하다.

- 정 이진트리(Full Binary Tree)
- 정 이진트리는 모든 노드가 0개 또는 2개의 자식 노드를 갖는 트리이다.

- 포화 이진트리(Perfect Binary Tree)
- 포화 이진트리는 모든 레벨이 노드로 꽉 차 있는 트리를 뜻한다.
- 전 이진트리의 성질도 만족해야 한다. 즉 모든 노드가 0개 혹은 2개의 자식 노드를 갖는다.
- 모든 말단 노드가 동일한 깊이 또는 레벨을 갖는다.
- 트리의 노드 개수가 정확히 2^k-1 개여야 한다. 여기서 k는 트리의 높이다.

이진 탐색 트리(Binary Search Tree)
: 이진트리이면서 아래의 속성을 갖는 트리
- 이진 탐색 트리의 노드에 저장된 키(key)는 유일하다.
- 부모의 키가 왼쪽 자식 노드의 키보다 크다.
- 부모의 키가 오른쪽 자식 노드의 키보다 작다.
- 왼쪽과 오른쪽 서브 트리도 이진 탐색 트리이다.

출처: https://code-lab1.tistory.com/8 [코드 연구소:티스토리]
'IT > CS 공부' 카테고리의 다른 글
| [CS] [알고리즘] 피보나치 수열 구현방식 3가지 (0) | 2022.06.27 |
|---|---|
| [CS] 빅오(Big-O) 표기법 (0) | 2022.06.22 |
| [CS] 해시테이블 (0) | 2022.05.01 |
| [CS] Servlet (0) | 2022.04.01 |
| [CS] MVC (0) | 2022.04.01 |