자료구조&알고리즘

트리 자료구조 (이진트리)

with_AI 2022. 4. 8. 12:35

트리

- 한 노드가 여러 노드를 가르킬 수 있음

- 비 선형적 자료구조

- 그래프

 

- 데이터 구조의 계층적인 표현

- root는 단 한개만 존재

- 부모 자식 관계 존재

- 트리 안에 트리가 있는 sub tree 구조

 

 

 

 

 

트리

 

- 이진 트리

- AVL 트리, 레드-블랙 트리

- B-트리, B+트리

- 세그먼트 트리

- 트라이

 

 


이진 트리

 

- 각 노드가 최대 2개의 자식 노드를 가지는 트리

 

정 이진 트리 (full binary tree)

- 모든 노드가 2개의 자식을 가지거나 자식이 없을 때

포화 이진 트리 (Perfect Binary tree)

- 모든 노드가 2개의 자식을 가지고 leaf 노드가 같은 레벨일때

- 높이가 h인 포화 이진 트리에서 노드 개수는 2^h -1 (root때문에 1개 빼줌)

- Leaf 노드 개수는 2^h

 

 

완전 이진 트리

- 마지막 레벨을 제외하고 모든 노드가 채워져야 함

- 노드는 왼쪽에서 오른쪽으로 채워짐

 

이진트리는 일차원 배열로 표현이 가능하다.

 

 

이진 트리의 응용

- 힙

- 이진 탐색 트리

- B-tree

- AVL tree

 

이진 트리의 기본 연산

- 트리에 데이터 삽입하기

- 데이터 삭제 하기

- 데이터 검색하기

- 트리 탐색 하기

 


트리 순회

 

- 트리 구조에서 각 노드를 한 번 씩 방문하는 과정

 

- 전위 탐색

- 중위 탐색

- 후위 탐색

 

전위탐색

- 루트 노드 방문

- 왼쪽 서브 트리를 전위 탐색

- 오른쪽 서브 트리를 전위 탐색

 

중위탐색

- 왼쪽 서브트리 중위탐색

- 루트 노드 방문

- 오른쪽 서브트리 중위탐색

 

후위탐색

- 왼쪽 서브트리를 후위탐색

- 오른쪽 서브트리를 후위탐색

- 루트 노드 방문

 

노드를 방문하는 순서 차이가 중요함

 

 


 

이진 탐색 트리 BST

 

이진트리

- 노드의 왼쪽 서브 트리에는 루트 노드보다 작은 값들만

- 노드의 오른쪽 서브 트리에는 루트 노드보다 큰 값들만

- 서브 트리는 다시 이진 탐색 트리

- 중복된 값은 없다.

 

 

최소값은 트리의 맨 왼쪽 값, 오른쪽 값은 최대 값이 된다.

 

 

이진 탐색트리의 삽입

- 중복 데이터는 삽입 X

- 추가된 노드는 트리의 leaf에 삽입

 

이진 트리의 삭제

1. 삭제할 데이터가 leaf 면 그냥 삭제

2. 한 개의 자식 노드를 가질 경우 그냥 삭제 후 올림

3. 두 개의 자식 노드를 가질 경우 

- 왼쪽 서브 트리의 최댓값과 교체

- 오른쪽 서브 트리의 최솟값과 교체