Stack
데이터를 순차적으로 저장하고, 저장한 순서의 마지막부터 출력하는 자료구조
특징
// a,b,c,d를 스택에 push하고 3번 pop하기
//Integer형 스택 선언
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
---------------------------
a <- b <- c <- d
---------------------------
들어간 순서대로 a,b,c,d가 저장됨
stack.pop();
stack.pop();
stack.pop();
---------------------------
a
---------------------------
d, c, b
마지막에 들어온 데이터부터 출력
입력과 출력이 한 방향에서 이루어져서 First In Last Out 구조를 가지고 있다.
메서드
- push(): 스택에 데이터 추가
- pop(): 가장 나중에 추가된 데이터를 리턴하고 삭제
- size(): 데이터 크기 리턴
- peek(): 가장 나중에 추가된 데이터 리턴
- show(): 스택의 모든 데이터를 String 타입으로 변환하여 리턴
- clear(): 모든 데이터 삭제
Queue
데이터를 순차적으로 저장하고, 저장한 순서대로 출력하는 자료구조
메서드
- add(): 큐에 데이터 추가
- poll(): 가장 먼저 추가된 데이터를 리턴하고 삭제
- size(): 데이터 크기 리턴
- peek(): 가장 먼저 추가된 데이터 리턴
- show(): 큐의 모든 데이터를 String 타입으로 변환하여 리턴
- clear(): 모든 데이터 삭제
Graph
여러개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조
각종 용어들
- 정점 (vertex), 노드(node): 그래프의 기본 원소
- 간선 (edge): vertex를 이어주는 선. 노드간의 관계
- 인접 정점 (adjacent vertex): edge에 직접적으로 연결되어 있는 vertex
- 가중치 그래프 (weighted Graph): 연결 강도가 표현되어 있는 그래프
- 비가중치 그래프 (unweighted Graph): 연결 강도가 없는 그래프
- 무(방)향 그래프 (undirected graph): 각 노드에서 상호 방향으로 이동 가능한 그래프
- 단방향 그래프(directed): 일방통행 그래프
- 진입차수 (in-degree) / 진출차수 (out-degree): 한 정점에 들어오는 간선과 나가는 간선의 갯수
- 자기 루프 (self loop): 정점에서 진출하는 간선이 다른 정점을 거치지 않고 자기 자신에게 진입하는 경우
- 사이클 (cycle): 한 정점에서 출발하여 다시 해당 정점으로 돌아갈 수 있는 그래프
메서드
- setGraph(size): 그래프에 size만큼의 버텍스 추가
- getGraph(): 인접 행렬 정보가 담긴 배열 반환
- addEdge(from, to): fromVertex와 toVertex 사이의 간선 추가
- hasEdge(from, to): fromVertex와 toVertex 사이의 간선 여부를 Boolean형태로 리턴
- removeEdge(from, to): fromVertex와 toVertex 사이의 간선 삭제
Tree
단방향 그래프의 한 구조
각종 용어들
- 루트(Root): 트리 구조의 시작점이 되는 노드
- 리프(Leaf): 트리 구조의 끝지점. 자식 노드 없음
- 깊이(depth): 루트로부터 하위 계층의 특정 노드까지의 깊이
- 레벨(Level): 같은 깊이를 가지고 있는 노드
- 높이(hight): 리프 노드를 기준으로 루트까지의 높이
- 서브트리(Sub tree): 트리 내부에 트리 구조를 갖춘 것
메서드
- addChildNode(value): value를 Tree에 계층적으로 추가
- removeChildNode(node): node를 Tree에서 삭제
- getChildrenNode(): 현재 트리의 children 리턴
- contains(value): 트리에 포함된 데이터 검색해서 boolean형으로 리턴
'development > 자료구조, 알고리즘' 카테고리의 다른 글
프로그래머스- 분수의 덧셈 (0) | 2023.02.12 |
---|---|
Time Complexity (0) | 2023.01.19 |