ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TreeSet
    JAVA/컬렉션 프레임워크 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]

     

    사진 출처 : Java의 정석 (남궁성 지음)

     

    위의 사진과 같이 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
Designed by Tistory.