자료구조 - 이진트리(Binary Tree)
이진 트리(Binary Tree)
계층형 자료구조(Hierarchical Data Structure)인 이진 트리에 대해 알아본다. 이진트리의 순회와 이진 탐색트리를 만들어 본다.
1. 개념
이진 트리의 용어
- 깊이 : 루트노드에서 해당 노드까지의 경로의 길이
- 레벨 : 깊이가 같은 노드들의 집합
- 차수 : 해당 노드의 자식 노드의 수
- 길이 : 출발 노드에서 목적 노드까지의 거리
이진 트리의 종류
- 포화 이진 트리(Full Binary Tree)
- 완전 이진 트리(Complete Binary Tree)
- 편향 이진트리(Skewed Binary Tree)
2. 구현
배열을 이용한 방법과 연결 리스트를 이용한 방법이 있다. 배열을 이용할 경우 구현이 쉽고 인덱스 규칙에 따라 특정 노드를 찾기 쉽다. 하지만 자료가 편향 이진트리와 같은 구조일 경우 메모리 낭비가 심해진다. 따리서 연결 리스트를 이용해 구현해 본다.
이진 트리의 순회
현재 노드를 D, 왼쪽 노드를 L, 오른쪽 노드를 R이라 하면
- 전위순회 : DLR
- 중위순회 : LDR
- 후위순회 : LRD
LinkedBinaryTree.java
LinkedBinaryTree_Test.java
이진 탐색 트리(Binary Search Tree)
- 모든 원소는 서로 다른 유일한 키를 갖는다.
- 왼쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 작다.
- 오른쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 작다.
- 왼쪽 서브 트리와 오른쪽 서브 트리도 이진 탐색 트리다.
BinarySearchTree.java
BinarySearchTree_Test.java
참고문헌
itdexter님, secmem님, marobiana님, 책 - ‘자바로 배우는 쉬운 자료구조’
update : 2016-03-07