데이터 항목 사이의 관계가 1:n인 경우
그래프는 정점과 간선으로 이루어진 자료구조입니다
가중치
가중치는 간선과 정점 사이에 드는 비용을 뜻합니다
하나 이상의 데이터에 단방향으로 연결되는 계층적 자료구조이다
이진 트리는 자식의 노드 수가 두개 이하인 트리를 의미합니다
최악의 선형적인 트리가 되는 것을 방지하고 스스로 균형을 잡는 이진 트리
두 자식 서브트리의 높이 차는 최대 1만틈 차이 난다는 특징이 있습니다
균형 이진 트리중에 하나로 탐색, 삽입, 삭제 모두가 O(log n)의 시간복잡도를 가집니다
C++ STL의 set, map, multiset, multimap 등에 쓰입니다
힙은 완전 이진 트리 기반 자료 구조이며, 최소 힙과 최대힙 두가지가 있고 해당 힙에 따라 특정한 특징을 지킨 트리를 말합니다
우선순위 큐는 우선순위 대기열이라고도 하며, 대기열에서 우선순위가 높은 요소가 우선순위가 낮은 요소보다 먼저 제공되는 자료구조입니다
https://velog.io/@cada/자바스크립트로-우선순위-큐-구현하기
Map은 특정 순서에 따라 키와 매핑된 값의 조합으로 형성된 자료구조입니다
레드 블랙 트리 자료 구조를 기반으로 형성되고 삽입하면 자동으로 정렬됩니다
Map은 해시태이블을 구현할때 쓰입니다
map<string, int>
Set은 특정 순서에 따라 고유한 요소를 저장하는 컨테이너이며, 중복되는 요소는 없고 오로지 희소한(Unique) 값만 저장하는 자료 구조입니다
var mySet = new Set();
mySet.add(1); // Set { 1 }
mySet.add(5); // Set { 1, 5 }
// 중복 되는 값은 추가로 저장되지 않는다
mySet.add(5); // Set { 1 }
해시 테이블은 무한에 가까운 데이터들을 유한한 개수의 해시 코드 값으로 매핑한 테이블 입니다
해시 코드는 배열의 인덱스와 같기 때문에, 해시 코드로 배열에 접근이 가능합니다
유튜브 동영상, 블록체인등에 쓰입니다
하지만, 최악의 경우 모든 key 값 k가 하나의 slot으로 해싱되는 경우 길이가 n인 이중 연결리스트가 생성되어 O(n) 의 시간복잡도를 가진다
이 경우도 수행시간이 길어져, 최악의 경우 O(n)의 시간복잡도를 갖는다
체이닝 처럼 포인터가 필요 없고, 지정한 메모리 외 추가적인 저장공간이 필요 없습니다