2022/03/29 3

AVL 트리(AVL Tree)

이전 포스팅에서 완전 이진 탐색 트리에 대해 설명했지만 이 포스팅을 통해 들어온 사람들을 위해 다시 설명한 후 AVL트리를 설명하겠다. 완전 이진 탐색 트리(Complete Binary Search Tree) 이진 탐색 트리는 자료를 탐색하는데 최적화된 트리이다. 하지만 자료가 오름차순이나 내림차순과 같은 순서대로 입력되면 트리가 한쪽으로만 만들어지는 형태가 된다. 이는 연결 리스트와 다를 바 없는 형태로 이진 탐색 트리의 장점인 빠른 검색 속도를 이용하지 못한다. 이를 해결하기 위해 나온 것이 완전 이진 탐색 트리이다. 완전 이진 탐색 트리(Complete binary search tree)는 완전 이진 트리의 성질을 가지는 이진 탐색 트리이다. 완전 이진 탐색 트리는 편향된 이진 탐색 트리와는 다르게..

자료구조 2022.03.29

이진 탐색 트리(Binary search tree)

이진 탐색 트리란?(What is a Binary search tree?) 이진 탐색 트리(Binary Search Tree, BST)는 이진 트리에서 자료의 탐색, 삽입, 삭제를 효율적으로 하기 위해 만들어진 트리이다. 연결 리스트의 경우 삽입, 삭제시 O(1)의 시간 복잡도를 가진다. 그러나 자료를 탐색하는 경우 O(n)의 시간 복잡도를 가진다. 반면 이진 탐색 트리의 경우 트리의 높이를 h라고 했을 때 O(h)의 시간 복잡도를 가진다.(노드의 개수를 n이라고 하면 O(Log n)의 시간 복잡도를 가짐) 다음은 이진 탐색 트리의 정의이다. 정의 이진 탐색 트리는 공백이 가능한 이진 트리로서, 공백이 아닐 경우 다음의 조건들을 만족한다. 모든 노드는 이진 탐색 트리내에서 유일한 키를 갖는다. 임의의 노..

자료구조 2022.03.29

일반 트리에서 이진 트리로 변환

일반 트리는 차수가 불규칙하기 때문에 자료를 처리할 때 이진 트리에 비해 비효율적인 면이 있다. 그렇기 때문에 일반 트리를 이진 트리로 변환해야 할 때가 있다. 일반 트리를 이진 트리로 변환하는 방법은 다음과 같다. 먼저 각 부모 노드당 2개의 노드만 가지도록 부모 노드의 왼쪽 자식과 오른쪽 형제를 연결한다. 다음 적절한 각도로 트리를 회전시킨다.(대부분 45도로 회전하라고 한다.) 회전한 트리를 적절하게 재배치를 하면 이진 트리가 된다.

자료구조 2022.03.29