https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure
[ 스택, 큐, 트리, 힙 구조 설명 ]
스택: 세로로 된 바구니와 같은 구조로 먼저 넣게 되는 자료가 마지막으로 나오게 되는 First-In Last-Out(FILO) 구조이다.
큐: 가로로 된 통과 같은 구조로 먼저 넣게 되는 자료가 가장 먼저 나오는 First-In First-Out(FIFO) 구조이다.
트리: 정점과 간선을 이용해 사이클을 이루지 않도록 구성한 Graph의 특수한 형태로, 계층이 있는 데이터를 표현하기에 적합하다.
힙: 최댓값 또는 최솟값을 찾아내는 연산을 쉽게 하기 위해 고안된 구조로, 각 노드의 키값이 자식의 키값보다 작지 않거나(최대힙) 그 자식의 키값보다 크지 않은(최소힙) 완전이진트리이다.
참고
https://woovictory.github.io/2018/12/27/DataStructure-Diff-of-Array-LinkedList/
https://www.nextree.co.kr/p6506/
https://www.studytonight.com/data-structures/linked-list-vs-array
선형 자료구조의 일종
정점과 간선을 이용해 사이클을 이루지 않도록 구성한 Graph의 특수한 형태로, 계층이 있는 데이터를 표현하기에 적합하다.
포화 이진 트리: 모든 레벨이 꽉 찬 이진 트리
완전 이진 트리: 위에서 아래로, 왼쪽에서 오른쪽으로 순서대로 차곡 채워진 이진 트리
(완전 이진 트리 < 포화 이진 트리)
이진 트리 기반의 탐색을 위한 자료 구조
조건 4가지
탐색, 삽입, 삭제의 평균 시간복잡도 O(log n)
But, 편향 트리는 O(n)
참고
https://mattlee.tistory.com/30
최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전 이진 트리를 기본으로 한 자료구조
힙에는 두가지 종류가 있으며, 부모노드의 키값이 자식노드의 키값보다 항상 큰 힙을 '최대 힙', 부모노드의 키값이 자식노드의 키값보다 항상 작은 힙을 '최소 힙'이라고 부른다.
(우선순위 큐는 힙이라는 자료구조를 가지고 구현한다.)
(우선순위 큐(Priority Queue)는 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나오는 것)
힙 중에서 가장 널리 쓰이는 형태 중 하나로 완전 이진 트리 형태인 힙
참고:
https://kayuse88.github.io/binary-heap/
https://doublesprogramming.tistory.com/241
키,값으로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조
내부적으로 배열을 사용하여 데이터를 저장하기 때문에 빠른 검색 속도를 갖는다.
-> 평균 시간복잡도 O(1)
(해시 테이블은 각각의 Key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색하게 된다. 여기서 실제 값이 저장되는 장소를 버킷 또는 슬롯이라고 한다.)
저장할 데이터와 연관된 고유한 인덱스 값을 설정하는 것이다.
그렇지 못할 경우 Collision 발생
참고:
https://mangkyu.tistory.com/102
노드와 간선을 하나로 모아 놓은 구조
정점과 간선의 연결관계에 있어서 방향성이 없는 그래프를 Undirected Graph 라 하고, 간선에 방향성이 포함되어 있는 그래프를 Directed Graph 라고 한다.
Undirected Graph 에서 각 정점(Vertex)에 연결된 Edge 의 개수를 Degree 라 한다. Directed Graph 에서는 간선에 방향성이 존재하기 때문에 Degree 가 두 개로 나뉘게 된다.
각 정점으로부터 나가는 간선의 개수를 Outdegree 라 하고, 들어오는 간선의 개수를 Indegree 라 한다.
인접 행렬 (adjacent matrix)
(간선의 수와 무관하게 항상 n^2개의 메모리 공간 필요)
인접 리스트 (adjacent list)
깊이 우선 탐색 (Depth First Search: DFS)
그래프 상에 존재하는 임의의 한 정점으로부터 연결되어 있는 한 정점으로만 나아간다
너비 우선 탐색 (Breadth First Search: BFS)
그래프 상에 존재하는 임의의 한 정점으로부터 연결되어 있는 모든 정점으로 나아간다.