하나의 자료 뒤에 여러 개의 자료가 존재할 수 있는 형태
정점(nodes,vertices)과 간선(edge,branch)으로 이루어짐
방향 그래프 : 진행방향이 정해진 그래프
가중치 그래프 : 이동할 때 비용이 정해진 그래프
사이클 : 처음 시작한 지점에서 정점들을 돌아서 처음 시작한 지점으로 돌아오는 것을 뜻함
ex) 무방향 그래프에서 1-2-4-1로 돌아올 수 있으므로 싸이클이 있다.
그래프의 연결 관계를 2차원 배열으로 나타내는 방식
V : 노드의 총 개수
E : 간선의 개수
라고 했을 때
arr[i][j] : i에서 j로가는 간선이 있으면 1
무향 그래프일 경우에는 아래처럼 대칭을 이루게 된다.
arr[i][j]
<--- 확인하면 끝
무향 그래프
키워드 오일러 경로, DFS, BFS
트리를 정점과 선분을 이용해 사이클 없이 구성된 그래프
노드 : 트리의 구성 요소(A,B,C,D 등)\
Root : 최상위 노드
depth : Root를 기준으로 다른 노드로 접근하기 위한 거리
leaf : 자식이 없는 노드(최하위 노드)
A는 B,C의 부모 / B,C는 A의 자식
Root 노드를 포함, Leaf노드를 제외한 모든 노드의 자식이 최대 2개인 Tree
아래의 규칙을 지키는 이진트리르 뜻한다.
키워드 : Rebalancing, Red Black Tree,
Key-Value 값을 가진 배열 형태 자료구조
배열 구조로 되어있지만 해당되는 인덱스를 키 값과 해시 함수가 정해준다.
key -> hash function() -> index
key값을 넣으면 해당 인덱스를 바로 찾을 수 있다.
충돌 : key값이 다르지만 같은 index를 가리킬 때
같은 주소로 해싱되는 원소들을 연결리스트로 관리하는 방법이다.
추가 연결 리스트 필요
장점 : 계산한 해시주소에 해당하는 연결 리스트로 실행하기 때문에 빠르다
단점 : 주소의 쏠림현상이 일어날 수 있다.
빈자리가 생길 때까지 해시값을 계속 만들어 냄
주어진 테이블 공간에서 해결하므로 추가 공간 필요 없음