class TreeNode {
TreeNode left; // 왼쪽 자식 노드
Object element; // 저장할 객체
TreeNode Right; // 오른쪽 자식 노드
}
단점
boolean add(Object o) // 저장할 객체 o
중복을 허용하지 않기 때문에 compare()를 호출해서 비교
*HashSet은 equlas(), hashCode()로 비교
Collection interface에 포함된 메서드는 제외
TreeSet() 기본생성자
TreeSet(Collection c) // 주어진 컬렉션을 저장하는 TreeSet 생성
TreeSet(Comparator comp) // 주어진 정렬기준으로 정렬하는 TreeSet를 생성
Object first() // 정렬된 순서에서 첫 번째 객체 반환(제일 작은)
Object last() // 정렬된 순서에서 마지막 객체를 반환(제일 큰)
Object ceiling(Object o) // 지정된 객체와 같은 객체를 반환, (올림) 없으면 큰 값을 가진 객체 중 제일 가까운 값의 객체를 반환, 없으면 null
Object floor(Object o) // 지정된 객체와 같은 객체를 반환, (버림) 없으면 작은 값을 가진 객체 중 제일 가까운 값의 객체를 반환, 없으면 null
Object higher(Object o) // 지정된 객체보다 큰 값을 가진 객체 중 제일 가까운 값의 객체를 반환, 없으면 null
Object lower(Object o) // 지정된 객체보다 작은 값을 가진 객체 중 제일 가까운 값의 객체를 반환, 없으면 null
SortedSet subSet(Object fromElement, Object toElement)
// 범위 검색(from과 to 사이)의 결과를 반환한다. (끝 범위인 toElement는 범위에 포함되지 않음)
SortedSet headSet(Object toElement) // 지정된 객체보다 작은 값의 객체들을 반환한다.
SortedSet tailSet(Object fromElement) // 지정된 객체보다 큰 값의 객체들을 반환한다.
트리 순회(tree traversal)
부모를 앞으로 보내는 것을 pre order(전위순회) 라고 한다. (부모를 먼저 읽고 자식을 나중에)
부모를 나중에 읽고 자식을 먼저 읽는 것을 post order (후위순회)라고 한다
부모를 가운데 두고 왼쪽 자식(1) 부모(2) 오른쪽 자식(3) 순으로 읽는 것을 inorder(중위 순회)라고 한다.
레벨 순회는 순서대로 위에서 아래로, 왼쪽에서 오른쪽으로 순회 한다.
중위 순회하면 오름차순으로 정렬된다.
TreeSet : 정렬과 범위 검색에 유리하다, 그러나 트리가 커질 수록 추가/삭제 시간이 오래걸린다.