-
TreeSetJAVA/컬렉션 프레임워크 2023. 8. 3. 22:47
이진 검색 트리는 루트에서 시작해서 2개의 부모를 가지는 자료구조이다.
루트가 아닌 노드는 부모 노드와 left, right라는 2개의 자식 노드를 가지게 된다.
이진 검색 트리의 특징
- 모든 노드는 최대 2개의 자식 노드를 가질 수 있다.
- 왼쪽 자식노드의 값은 부모노드의 값보다 작고 오른쪽 자식노드의 값은 부모노드의 값보다 커야한다.
- 노드의 추가 삭제에 시간이 걸린다. -> 순차적으로 저장하지 않기 때문에
- 검색과 정렬기능이 배열이나 링크드 리스트에 비해 뛰어나다.
- 중복된 값을 저장하지 못한다.
자바에서 제공하는 Treeset은 저장할 때 이미 정렬하기 때문에 값을 읽을 때 별도의 정렬을 할 필요가 없다.
public class Main { public static void main(String[] args) { TreeSet set = new TreeSet<>(); Integer[] score = {70, 50, 100, 40, 60, 20, 30, 90}; for(int i = 0; i < score.length; i++) set.add(score[i]); System.out.println("50보다 작은 값 :", + set.headSet(new Integer(50))); System.out.println("50보다 큰 값 :", + set.tailSet(new Integer(50))); } }
결과
50보다 작은 값 : [10, 35, 45]
50보다 큰 값 : [50, 65, 80, 95, 100]
위의 사진과 같이 50보다 작은 값들은 50 노드의 왼쪽 자식 노드와 그 아래이고, 나머지 값들은 50 노드의 오른쪽 자식과 부모 클래스의 오른쪽 노드들이다.
'JAVA > 컬렉션 프레임워크' 카테고리의 다른 글
HashMap (0) 2023.08.04 HashSet (0) 2023.08.03 Stack, Queue (Priority Queue와 deque 포함) (0) 2023.08.03 ArrayList와 LinkedList (0) 2023.08.03