본문 바로가기

자료구조5

[기초] 자료구조 / 트리 (Tree) 트리 (Tree) 사이클이 없는 그래프를 트리라고 합니다. 따라서 정점이 V개 이면 간선은 V-1개를 가지는 성질이 있습니다. 루트 있는 트리 (Rooted Tree) 루트가 있는 트리로 아래 그림에서 1이 루트가 됩니다. 루트 부터 아래로 방향을 정할 수 있습니다. 이때 1은 2의 부모, 2는 4의 부모 2는 1의 자식, 4는 2의 자식, 3의 자식은 6과 7 4와 5는 형제, 2와 3도 형제 따라서 루트에 가까운 쪽이 부모가 됩니다. 부모가 없으면 루트, 자식이 없으면 단말정점(Leaf Node)이라 합니다. 같은 부모를 가지면 형제라 합니다. 깊이(Depth) 깊이는 루트부터의 거리를 말합니다. 루트의 깊이를 0으로 하거나 1로 합니다. 조상(Ancestor), 자손(Descendent) p -> .. 2022. 8. 12.
[기초] 자료구조 / 그래프(Graph)의 표현과 탐색 그래프를 저장하는 방식에 대해 알아봅니다. 그래프의 표현 - 위와 같은 그래프는 정점이 6개, 간선이 8개 있다. - 간선에 방향이 없기 때문에, 방향이 없는 그래프이다. - 정점 : {1, 2, 3, 4, 5, 6} - 간선 : {(1, 2), (1, 5), (2, 5), (2, 3), (3, 4), (2, 4), (4, 5), (4, 6)} 보통 위 그림과 같이 정점의 개수, 간선의 개수 그리고 m개의 줄에 어떤 간선이 연결되어 있는지 주어집니다. 인접 행렬(Adjacency-matrix) 정점의 개수를 V라 했을 때, V x V 크기의 이차원 배열을 이용합니다. A[i][j] = 1 (i -> j 간선이 있을 때), 0 (없을 때) 이 인접행렬은 없는 간선도 저장하기 때문에 불필요한 배열이 생겨 많.. 2022. 8. 10.
[기초] 자료구조 / 그래프 (Graph) 그래프 그래프는 일종의 자료구조이고, 정점과 간선으로 이루어져 있습니다. 정점은 Node, Vertex / 간선은 Edge라 하며 정점 간의 관계를 나타냅니다. ex) G(V,E) 차수(Degree) 차수는 정점과 연결되어 있는 간선의 개수를 말합니다. 위 그래프에서 1, 2, 3은 각각 두 개의 간선이 연결되어 있으므로, 차수는 모두 2가 됩니다. 경로(Path) 예를 들어, 정점A에서 정점 B로 가는 경로는 1. A -> C -> D -> E -> B 2. A -> B 3. A -> C -> B 4. A -> C -> E -> B 이렇게 거쳐가는 경우가 있습니다. 이것이 바로 경로가 됩니다. 사이클(Cycle) 시작 정점과 도착 정점이 같으면 사이클이라 합니다. 예를 들어, 정점A에서 다시 정점A로 .. 2022. 8. 9.
[기초] 자료구조 / 큐(queue)와 덱(deque), 문자열 큐(queue) 한쪽 끝에서만 자료를 넣고 다른 한쪽 끝에서만 뺄 수 있는 자료구조 먼저 넣은 것이 가장 먼저 나오기 때문에 First In First Out (FIFO) 라고도 합니다. - push : 큐에 자료를 넣는 연산 - pop : 큐에서 자료를 빼는 연산 - front : 큐의 가장 앞에 있는 자료를 보는 연산 - back : 큐의 가장 뒤에 있는 자료를 보는 연산 - empty : 큐가 비어있는지 아닌지를 알아보는 연산 - size : 큐에 저장되어있는 자료의 개수를 알아보는 연산 그림에서 빨간색 1번이 front로 가장 앞에 있는 자료이고 빨간색 3번이 back으로 가장 뒤에 있는 자료입니다. 큐도 스택과 같이 이미 구현된 라이브러리를 사용할 수있습니다. C++의 경우 STL의 queue .. 2022. 7. 26.
[기초] 자료구조 / 스택(stack) 스택(stack) 한쪽 끝에서만 자료를 넣고 뺄 수 있는 자료구조 마지막으로 넣은 것이 가장 먼저 나오기 때문에 Last In First Out (LIFO) 라고도 합니다. - push : 스택에 자료를 넣는 연산 - pop : 스택에서 자료를 빼는 연산 - top : 스택의 가장 위에 있는 자료를 보는 연산 - empty : 스택이 비어있는지 아닌지를 알아보는 연산 - size : 스택에 저장되어있는 자료의 개수를 알아보는 연산 그림에서 top은 6이고 4가 push 되면 top은 4가 됩니다. 빨간색 숫자가 자료가 들어온 순서를 나타냅니다. 스택은 이미 구현된 라이브러리를 사용할 수있습니다. C++의 경우 STL의 stack JAVA의 경우 java.util.Stack 직접 구현할 경우 배열을 이용해.. 2022. 7. 26.