선형 구조 | 비선형 구조 | |
---|---|---|
데이터 구조/저장 | 데이터를 순차적으로 직선 형태로 나/배열시킴 + 전후/인접/선후 원소들 간 1:1 연결/나열 형태 → 데이터를 순차적(sequential)/선형으로 순회할 수 있도록 저장 | 하나의 데이터 아래/뒤에 여러 개의 데이터/원소가 존재할 수 있음, 전후/인접 원소들 간 다:다 연결/배치 형태 → 데이터가 계층적으로 연결되어 저장 |
level | 단일 level로 구성됨 | multi-level로 구성됨 → 계층적(hierarchical) 구조 나타나기에 적절 |
순회/탐색 | 1번에 탐색 가능, 단일 동작으로 모든 데이터의 순차적 순회 가능, 모든 원소들을 순회하기 쉬움 | 복잡, 모든 원소들을 순회하기 쉽지 않음, 데이터 순회에 복수의 동작 필요 |
순서 | 원소들 간 순서 고려 | 원소들 간 순서 관계 중요하지 않음 |
구현 | 쉬움 ← 구조 간단 | 다소 번잡 |
메모리 활용 | 효율성 낮음? (어떤 설명에서는 기억장소 효율/메모리 밀도 높음) | 좀 더 효율적 |
시간 복잡도 | 저장 공간이 늘어나면 비례해서 증가 | 저장 공간이 늘어나면 비례하는 수준보다 적게 증가 |
예시 | - 기본: 배열, (선형)리스트(배열 기반 연속 방식 구조), 연결리스트(포인터 기반 연결 방식 구조) 등 → 자료 삽입/삭제가 어느 위치에서도 이루어짐 - 제한: 스택, 큐, 데크(스택+큐) 등 → 자료 삽입/삭제가 정해진 위치에서만 이루어짐 | 그래프(트리 포함), 가계도/조직도 상하 관계, 컴퓨터 폴더 구조 등 |
+ 기타 자료구조(집합, dictionary/사전 등)
나의 질문
- Java collections framework 중 map 및 set은 (비)선형 중 어떤 자료구조에 가까운가?
- 비선형 자료구조 heap, 2진탐색트리 등에서도 원소들 간 순서 관계 중요하지 않나?
공통 사항
1. bfs
2. dfs