비선형 자료구조
- 비선형 자료구조란 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 것이다.
- 자료들 간의 앞뒤 관계가 1:n, 또는 n:n 의 관계
- 트리와 그래프가 대표적이며 계층적 구조를 나타내기에 적절하다.
그래프(Graph)
정점과 간선으로 이루어진 자료구조입니다.
*정점과 간선
어떠한 곳에서 어떠한 곳으로 무언가를 통해 간다한다했을때 어떠한 곳은 정점(vertex)이 되고 무언가는 간선(edge)이 됩니다.
방향 그래프
: 두 정점을 연결하는 간선에 방향이 존재하는 그래프
무방향 그래프
: 두 정점을 연결 하는 간선에 방향이 존재하지 않는 그래프
가중치 그래프
: 두 정점을 이동할때 비용이 드는 그래프
* 가중치란? : 간선과 정점 사이에 드는 비용을 뜻함
트리(Tree)
그래프 중 하나로 그래프의 특징 처럼 정점과 간선으로 이루어져있고 트리 구조로 배열된 일종의 계층적 데이터의 집합입니다. 참고로 트리로 이루어진 집합을 숲 이라고 합니다.
트리는 루트노드, 내부노드, 리프노드로 이루어져있습니다
- 루트노드
: 가장 위에 있는 노드를 뜻합니다. 보통 트리 문제가 나오고 트리를 탐색할때 루트노드를 중심으로 탐색하면 문제가 쉽게 풀리는 경우가 있습니다.
- 내부노드
: 루트노드와 내부노드 사이에있는 노드를 뜻합니다.
- 리프노드
: 자식 노드가 없는 것을 뜻합니다.
트리의 높이와 레벨
다음은 트리와 높이와 레벨을 설명한 그림입니다.
- 깊이
: 트리에서의 깊이는 각 노드마다 다르며, 루트 노드로부터 특정 노드까지 최단 거리로 갔을때의 거리를 말합니다. 예를 들어 4번 노드의 깊이는 2입니다.
- 높이
: 트리의 높이는 루트 노드르부터 리프노드까지 거리 중 가장 긴 거리를 의미하며, 앞 그림의 트리의 높이는 3 입니다.
- 레벨
: 트리의 레벨은 주어지는 문제마다 조금씩 다르지만 보통 깊이와 같은 의미를 지닙니다. 1번 노드를 0레벨 이라고 하고 , 2번노드, 3번 노드까지의 레벨을 1레벨이라고 할 수 있고, 1번 노드를 1레벨이라고 한다면 2번 노드와 3번 노드는 2레벨이 됩니다.
- 서브트리
: 트리 내의 하위 집합을 서브트리라고 합니다. 트래 내에 있는 부분 집합이라고도 보면 됩니다. 지금 보면 5,6,7번 노드가 이 트리의 하위 집합으로 서브트리라고 합니다.
// 노드 생성
function createNode(content, children = []) {
return {
content,
children,
};
}
// 트리를 생성
const tree = createNode("hello", [
createNode("world"),
createNode("and"),
createNode("fun", [createNode("javascript")]),
]);
// 트리를 순회하는 함수
function traverse(node) {
console.log(node.content); // 현재 노드의 콘텐츠 출력
for (let child of node.children) {
traverse(child); // 각 자식에 대해 재귀적으로 traverse함수 호출
}
}
// 트리 순회 시작
traverse(tree);
// hello
// world
// and
// fun
// javascript
힙 (Heap)
완전이진트리(링크)의 일종
최대값과 최소값을 빠르게 찾기 위한 자료구조
- 최대힙(max heap) : 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리 (부모노드 : 최대값)
- 최소힙(min heap) : 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리 (부모노드 : 최소값)
최대값 or 최소값 검색시 : O(1)
삽입, 삭제시 : O(logn)
맵 (Map)
: 특정 순서에 따라 키(Key)와 매핑된 값(Value)의 조합으로 형성된 자료 구조
- 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 않고, Key 를 통해 Value를 얻을 수 있음
- Key는 중복될 수 없으며, Value는 중복 값을 허용함
- 자바에서 Map은 인터페이스로, 인터페이스를 구현 Map자료형에는 HashMap, LinkedHashMap, TreeMap 등이 있음
집합 (Set)
: 집합과 관련된 것을 쉽게 처리하기 위해 만들어진 자료형
- 데이터의 중복을 허용하지 않으며, 순서가 없음 (인덱싱을 통해 값을 얻을 수 없음)
- 자바에서는 HashSet, TreeSet, LinkedHashSet 등이 존재
해시 테이블(HashTable)
: Key와 Value를 1:1로 연관지어 저장하는 자료구조 (연관 배열 구조)
- 내부적으로 배열을 사용하여 데이터를 저장하기 때문에 빠른 검색속도를 가짐
- 특정한 값을 탐색하는데 고유 index(key)로 접근하기 때문에 시간복잡도는 O(1)을 가짐
참고
[자료구조 Java] 비선형 자료구조 ④ 맵 (Map), 집합 (Set), 해시테이블
비선형 자료구조란? : 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조를 말하며 일반적으로 트리나 그래프를 의미 5. 맵 (Map) : 특정 순서에 따라 키(Key)와 매핑된 값(Value)의 조합으로 형성
erinh.tistory.com
'혼자 고민해보기_ 개발 > CS' 카테고리의 다른 글
데이터베이스 기초 (데이터베이스 종류, 인덱스, B-트리, 최적화, 조인을 포함) (0) | 2023.11.16 |
---|---|
데이터베이스 기초 (엔티티, 릴레이션, 속성, 도메인, 필드, 레코드, 키, 테이블간의 관계, 트랜잭션과 무결성을 포함) (0) | 2023.11.15 |
테이블 간의 관계 (1:1 / 1:M / N:M) (1) | 2023.11.15 |
자바스크립트의 동작원리 (0) | 2023.11.14 |
네트워크 기초 (MAC 주소, IP 주소 및 주소체계, DHCP, NAT, HTTPS 를 포함) (1) | 2023.11.14 |