정렬된 배열을 이진 탐색 트리로 변환하는 알고리즘이 있다.
아래와 같이 구성되어 있는데, Recursive 하게 작성되어 있다.
Code는 Java 언어로 작성 되어있다.
BinaryTree* sortedArrayToBST(int arr[], int start, int end) {
if (start > end) return NULL;
// same as (start+end)/2, avoids overflow.
int mid = start + (end - start) / 2;
BinaryTree *node = new BinaryTree(arr[mid]);
node->left = sortedArrayToBST(arr, start, mid-1);
node->right = sortedArrayToBST(arr, mid+1, end);
return node;
}
BinaryTree* sortedArrayToBST(int arr[], int n) {
return sortedArrayToBST(arr, 0, n-1);
}
출처: http://leetcode.com/2010/11/convert-sorted-array-into-balanced.html
'Programming > Java' 카테고리의 다른 글
Java 프로그램에서 garbage collection 이 얼마나 일어나는 지 알아 내기 (0) | 2013.05.14 |
---|---|
Java 에서 자원 할당하고 해제하기 (괜찮은 패턴) (0) | 2013.05.14 |
Marshalling vs Serialization (마샬링 과 시리얼라이즈 의 차이) (1) | 2013.02.06 |
import 문 기술 순서 규칙 (0) | 2013.01.09 |
Safe double checked locking (0) | 2013.01.03 |