선형 구조와 달리, 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 형태
정점(Vertex), 간선(Edge)의 집합으로 이루어진 자료 구조
무방향 그래프: (간선의) 방향이 없는 그래프
방향 그래프: 방향성이 있는 그래프
가중치 그래프: 간선의 가중치값이 존재하는 그래프
루트없는 트리: 간선을 통해 노드 간 잇는 방법이 한가지인 그래프 = 트리
이분 그래프 : 그래프의 노드를 겹치지 않게 두 그룹으로 나눈 후 다른 그룹끼리만 간선이 존재하게 분할할 수 있는 그래프
사이클이 없는 방향 그래프 : 노드에서 출발해 자기 자신으로 돌아오는 경로(사이클)가 없는 그래프
정점(node), 선분(branch)를 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태
이진 트리 : 트리의 하위 노드가 최대 2개인 경우
이때 서브 트리를 하나의 노드로 생각하도록 묶어서 생각하면 편리하다.
Root >왼쪽 > 오른쪽 순으로 운행
왼쪽 > Root > 오른쪽 순으로 운행
왼쪽 > 오른쪽 > Root 순으로 운행
반정렬 상태 (느슨한 정렬 상태)
를 유지mapping
이라고 한다.HashMap
키와 값이 구성되는 위치를 결정하거나 알 수 없다
키와 값으로 null이 허용된다
TreeMap :
key의 값을 기준으로 데이터가 순서대로 정렬되어 저장한다
저장 시간이 오래 걸린다
LinkedHashMap :
데이터를 입력한 순서대로 쌓이며 데이터를 저장한다
인덱스를 이용한 접근에 용이하다
순서가 없는 데이터의 집합 (삽입 순서대로 저장되지 않는다)
중복을 허용하지 않는다
순서가 필요 없고, 고유 값을 원할 경우 최선의 자료 구조
수정 가능
Fast Lookup에 용이
HashSet
null 값을 허용한다
내부적으로 HashMap을 사용하여 값을 저장한다
해시 테이블은 동기화 synchronized
를 지원하고, 해시맵은 지원하지 않는다는 차이가 있다
참고 : 그래프, 트리 간결한 정리 Miro, 그래프, 트리 차이 pat coding, 그래프 상세 : 괭이쟁이, 트리 상세 : 괭이쟁이, 힙 상세 : Heee's Development Blog, 맵 상세 : G91 개발일지, 셋 상세 1 : 헬창코딩, 셋 상세 2 : inyong_pang.log, 해시테이블 상세 : 망나니개발자