여러 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조로, 정점간의 관계를 표현한 조직도이다. 두 정점 사이를 이어주는 간선과 정점으로 이루어진다.
즉, 정점과 그 정점을 연결하는 간선을 하나로 모아 놓은 자료 구조다.
두 정점을 연결하는 간선에 방향이 없는 그래프이다.
두 정점을 연결하는 간선에 방향이 있는 그래프이다.
간선에 비용이나 가중치가 할당된 그래프이다.
그래프에서 모든 노드가 최소한 하나의 경로로 연결된 그래프이다.
그래프에서 일부 노드가 다른 노드와 연결되지 않은 그래프이다.
그래프에 사이클이 존재하는 그래프로 한 노드에서 시작하여 다시 해당 노드로 돌아올 수 있는 경로(사이클)이 있는 그래프이다. 적어도 한 개 노드에서 시작하여 다른 노드들을 거쳐 다시 자기 자신으로 돌아오는 경로를 가지는 그래프이다.
그래프에 사이클이 존재하지 않는 그래프로 한 노드에서 시작하여 해당 노드로 돌아오는 경로가 없는 그래프이다. 어떠한 경로도 자기 자신으로 돌아오지 않는 순환이 없는 그래프이다.
그래프의 일종으로 방향성이 있는 연결된 비순환 그래프이다. 하지만 일반 그래프와는 달리, 계층 구조를 가진다는 특수성이 있다.
자식 노드의 개수가 두 개 이하인 트리를 말한다.
탐색을 위한 이진 트리의 일종으로 특수한 노드 값을 가지는 형태의 이진 트리를 말한다.
왼쪽 노드에는 부모 노드보다 작은 값이 저장되고 오른쪽 노드에는 부모 노드보다 큰 값이 저장된다. 또한 모든 노드는 중복된 값을 가지지 않는다.
비선형적인 구조로 잘 만들어진 이진탐색트리는 O(log n)의 시간 복잡도를 가지지만 데이터 삽입 순서에 따라 선형적인 구조를 가지게 된 경우에는 최악의 경우 O(n)의 시간복잡도를 가지게 될 수도 있다.
균형 이진 트리의 일종으로 이진 탐색 트리에 균형 트리의 특징을 넣은 트리를 말한다.
이진 탐색 트리와 같은 특징을 가지고 있지만, ACL 트리는 균형 트리의 특징을 가져 서브 트리의 좌, 우 높이 차이가 1을 초과하지 않도록 동작한다.
AVL 트리는 항상 균형을 맞춰 높이를 유지하기 때문에 평균, 최악의 경우 모두 시간 복잡도를 O(log n)을 가지게 된다.
자가 균형 이진 탐색 트리이다. 레드블랙트리는 트리의 모양이 군형 잡히도록 각 노드들은 Red 혹은 Black의 색상을 가지고 모든 경우에서 O(log n)의 시간 복잡도를 보장받는다.
n차 트리의 변종으로 각 노드에 문자를 저장하는 자료구조이다. 따라서 트리를 아래쪽으로 순회하면 단어 하나가 나온다. 접두사를 빠르게 찾아보기 위한 흔한 방식으로, 유효한 단어 집합을 이용하는 많은 문제들은 트라이를 통해 최적화할 수 있다.
완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다. 여러 개의 값들 중에서 최대값이나 최소값을 빠르게 찾아내도록 만들어진 자료구조이다. 힙은 반정렬 상태(느슨한 정렬 상태)를 유지한다. 또, 중복을 허용한다는 특징이 있다.
최대힙은 자식 노드보다 부모 노드의 값이 크고, 최소힙은 자식 노드보다 부모 노드의 값이 작다.
새로운 요소가 들어오면 일단 새로운 노드를 힙의 마지막 노드에 이어서 삽입한다. 새로운 노드를 부모 노드들과 교환해서 힙의 성질을 만족시킨다.
최대힙에서 최대값은 루트 노드이므로 루트 노드가 삭제된다. 삭제된 루트 노드에는 힙의 마지막 노드를 가져오고 힙을 재구성한다.
우선순위 큐는 우선순위를 가진 항목들을 저장하는 큐로 FIFO 순서가 아닌 순위가 높은 데이터가 먼저 나가는 자료구조를 말한다. 일반적으로 힙을 이용하여 구현한다.
key, value 한 쌍으로 이루어진 자료구조이다. 순차적으로 해당 요소 값을 구하지 않고 key를 통해 value를 얻는다. 값은 중복될 수 있으나 key는 고유한 값을 가져야 하며 순서를 유지하지 않는다.
수학에서의 집합과 같은 개념으로 동일한 자료형을 모아놓은 자료구조를 말한다. 집합의 모든 원소는 중복이 허용되지 않는다. 삽입, 삭제, 탐색의 세 가지 연산을 지원한다.
해시 테이블은 데이터가 저장되는 곳으로, 해시 함수를 통해 산출된 해시 값을 인덱스를 하여 해당 데이터를 저장한다.
https://adjh54.tistory.com/325
https://velog.io/@kai6666/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EA%B7%B8%EB%9E%98%ED%94%84-Graph
https://leejinseop.tistory.com/43
https://gmlwjd9405.github.io/2018/08/13/data-structure-graph.html
https://velog.io/@kwontae1313/%ED%8A%B8%EB%A6%ACTree%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90
https://gmlwjd9405.github.io/2018/08/12/data-structure-tree.html
https://velog.io/@kku64r/rbtree
https://gmlwjd9405.github.io/2018/05/10/data-structure-heap.html
https://velog.io/@gnwjd309/data-structure-heap
https://myvelop.tistory.com/153
https://suyeon96.tistory.com/31
https://yoongrammer.tistory.com/81
https://healthcoding.tistory.com/51
https://jina-developer.tistory.com/101
https://gbdai.tistory.com/16