Language/자료구조 4

그래프(Graph) 과 DFS, BFS 구현

그래프란? 그래프는 노드와 그 노드를 연결하는 간선을 하나로 모아 놓은 것 그래프에는 방향성이 있을수도 있고 없을수도 있다. 트리는 그래프의 한 종류이다. 모든 그래프가 트리는 아니다. 트리는 사이클이 없는 하나의 연결 그래프 그래프 종류 무방향 그래프 방향 그래프 완전 그래프 그래프에서 사용하는 용어 정점(vertice) : 노드(node)라고도 하며 정점에는 데이터가 저장된다. (0, 1, 2, 3) 간선(edge): 링크(arcs)라고도 하며 노드간의 관계를 나타낸다.. 인접 정점(adjacent vertex) : 간선에 의해 연결된 정점으로 위에서 (정점0과 정점1은 인접 정점) 단순 경로(simple-path): 경로 중 반복되는 정점이 없는것, 같은 간선을 자나가지 않는 경로 차수(degree..

Stack

LIFO(Last-IN-First-Out) 어떠한 데이터들을 순차적으로 저장할 수 있으며 입구와 출구가 하나밖에 존재하지 않는 자료구죠이다. pop스택의 가장 최상위(마지막)에 위치한 데이터를 추출한 후에 스택에서 삭제한다 push스택의 가장 최상위(마지막)에 데이터를 삽입한다 clear스택에 저장된 모든 데이터를 삭제하고 스택을 초기화한다 peek스택의 가장 최상위(마지막)에 위치한 데이터를 추출한다.pop 메서드와는 달리 스택에서 데이터를 삭제하지 않는다 class JkStack { int top; int[] stack; int size; public JkStack(int size) { top = -1; stack = new int[size]; this.size = size; } public int ..

배열에서 검색

배열을 검새갛는 방법은 여러가지가 있지만 지금은 가장 간단한 방법에 중점을 둘것입니다. 선형 검색(Linear Search) 요소가 직선 모양으로 늘어선 배열에서의 검색은 원하는 키을 갖는 요소를 만날 때 까지 맨앞부터 순서대로 요소를 검색하면 되는데 이것이 선형 검색 또는 순차 검색 알고리즘 입니다. 최악의 경우 선형 검색은 전체 배열을 검사하게 된다. 따라서 선형 탐색의 시간 복잡도는 O(n) 이 걸린다 public static int linearSearch(int arr[], int x) { int n = arr.length; //순차적으로 arr[]각 요소와 x를 하나씩 비교 for (int i = 0; i < n; i++) { // 일치할경우 인덱스 반환 if(arr[i]==x) { return..

Tree 종류

트리란? 먼저 트리란 그래프의 일종으로 여러 노드가 한 노드를 가리킬 수 없는 구조입니다. 간단하게 회로가 없고, 서로 다른 두 노드를 잇는 길이 하나뿐인 그래프를 트리라고 합니다. Tree의 노드는 부모노드와 자식노드로 되어있고 더 이상 자식 노드가 없으면 leaf 라고 부른다. 트리의 종류 Binary Tree(이진 트리), Binary Search Tree(이진 탐색 트리), Complete Binary Tree(완전 이진트리) Full Binary Tree(정 이진 트리) , Perfect Binary Tree(포화 이진 트리) 트리가 균형이 맞으면 balanced 라고 하고 균형이 한쪽으로만 되어있는것을 unbalanced라고한다. balanced가 맞는 트리로는 Red-Black Tree 와 ..