코딩/자료구조
[자료구조] 이진 검색 트리
Hun die
2022. 7. 6. 19:14
이진 트리의 형태
왼쪽 자식 노드값 <= 부모 노드 값 <= 오른쪽 자식 노드 값
이진 트리는 어느 노드를 기준으로 왼쪽 서브 트리는 모두 그 노드보다 작은 값을 가지고 있고 오른쪽 서브트리는 모두 그 노드보다 큰 값을 가지고 있는 트리이다.
그러므로 중위 순회하면 정렬된 데이터 값을 얻는다.
연산
이진 검색 트리의 연산은 트리의 형태에 따라 시간 복잡도가 달라지는데 좌우가 균형갑혀 있다면 연산은 O(logN) 이 되지만, 어느 한 쪽으로 편향되어 있을수록 O(N)에 가까워진다.
기능
명령어 | 설명 | 반환값 |
height() | 트리의 높이를 구한다.(큐를 이용함) | int(트리 높이) |
height2() | 트리의 높이를 구한다.(재귀를 이용함) | int(트리 높이) |
empty() | 트리가 비었는지 확인한다. | bool (비었으면 true 아니면 false) |
size() | 트리의 크기값을 확인한다. | int (트리 크기) |
clear() | 트리를 비운다. | void (없음) |
insert(int value) | 트리에서 velue에 값을 삽입한다. | bool (삽입에 성공하면 true 아니면 false) |
erase(int value) | 트리에서 velue에 값을 삭제한다. | size_t (트리 사이즈) |
find(int value) | 트리에서 value값을 찾는다. | Node* (찾은 노드) |
traverseByLevelorder() | 트리를 순회한다.(레벨순회) | void (없음) |
traverseByPreorder() | 트리를 순회한다.(전위순회) | void (없음) |
traverseByInorder() | 트리를 순회한다.(중위순회) | void (없음) |
traverseByPostorder() | 트리를 순회한다.(후위순회) | void (없음) |