이진 트리


1. 이진 트리의 조건

- root node를 중심으로 두 개의 sub tree로 나뉘어진다.

- 나누어진 두 sub tree도 모두 이진 트리이어야 한다.

※ 트리 그리고 이진 트리는 그 구조가 재귀적이다. 따라서 트리와 관련된 연산은 재귀적 사고와 구현을 할 필요가 있다.


2. 이진 트리와 공집합 노드

- 하나의 노드에 두 개의 노드가 달리는 형태의 트리는 모두 이진 트리이다

- 공집합(Empty set)도 이진 트리에서는 노드로 간주한다.

 -> 그러므로 형제 노드가 비어 있다고 해도 공집합으로 간주하여 이진 트리      가 성립 된다.


3. 이진 트리의 레벨과 높이

- root 노드 부터 0레벨로 시작하고, 아래로 갈수록 레벨이 증가한다.

- 레벨의 최대값과 트리의 높이는 같다.


3. 완전 트리와 포화 트리

- 완전 이진 트리는 위에서 아래로 왼쪽에서 오른쪽으로 채워진 트리를 의미한다.

- 따라서 포화 이진 트리는 동시에 완전 이진 트리이다.

- 하지만 와전 이진 트리는 포화 이진 트리가 될 수 없다.


4. 이진 트리 구현의 두 가지 방법

4_1 배열을 이용한 표현

노드에 번호를 부여하고 그 번호를 배열의 인덱스 값으로 활용

- 편의상 배열의 첫 번째 요소는 사용하지 않음

- 트리가 완성 된 이후부터 탐색이 자주 일어날 경우 효율적


4_2 연결리스트를 이용한 표현

- 트리의 구조와 리스트의 연결 구조가 일치한다.

- 구현과 관련된 직관적인 이해가 더 좋은 편


5. 이진 트리 구현 - 노드 구조체 정의


6. 이진 트리 구현 - 트리 기능관련 함수 정의


7. 이진 트리 구현 - 트리 동작



'프로그래밍 > 자료구조' 카테고리의 다른 글

[Sort] 병합 정렬  (0) 2016.06.26
[Sort]간단한 정렬 알고리즘  (0) 2016.06.26
자료구조 - [Tree]수식 트리  (0) 2016.05.16
자료구조 - [Tree]순회  (0) 2016.05.07
자료구조 - [Tree] 의 개요  (0) 2016.04.27

+ Recent posts