본문 바로가기

자료구조3

[자료구조] 이진 트리 (Binary Tree) Binary Tree (이진 트리) 각 노드가 최대 2개의 자식을 갖는 트리 ■ 정의 - 루트: 트리의 가장 윗부분에 위치하는 노드 - 리프: 트리의 가장 아랫부분에 위치하는 노드 - 안쪽 노드: 리프를 제외한 나머지 노드(루트 포함) - 자식: 어떤 노드에서 가지로 연결된 아래쪽 노드 - 부모: 어떤 노드에서 가지로 연결된 바로 위쪽 노드 - 형제: 부모가 같은 노드 - 레벨: 루트로부터 얼마나 떨어져 있는지를 나타낸 값 - 차수: 노드가 갖는 자식의 수 - 높이: 루트에서 가장 멀리 떨어진 리프까지의 거리 - 서브트리: 트리 안에서 다시 어떤 노드를 루트로 정하고 그 자손으로 이루어진 트리 Binary Tree(이진 트리) 순회 방법 ■ 정의 ● preorder (전위 순회) : root Node -.. 2023. 3. 29.
[Algorithm] 버블 정렬(Bubble Sort) 버블 정렬 (Bubble Sort) ■ 정의 버블 정렬은 이웃한 두 요소의 대소 관계를 비교하고 필요에 따라 교환을 반복하는 알고리즘으로 단순 교환 정렬(straight exchange sort)이라고도 함 ■ 사용 예 - 총 3번의 Pass를 통해 [1, 3, 4, 6, 7]로 오름차순 정렬을 만들 수 있음 - 사진에서는 모든 비교과정을 표시하였지만, 이미 정렬된 수와의 비교는 굳이 진행하지 않아도 됨 ■ 장점 - 구현이 매우 간단하고, 소스코드가 직관적 - 정렬하고자 하는 배열 안에서 교환하는 방식이므로, 다른 메모리 공간을 필요로 하지 않음 => 제자리 정렬(in-place sorting) - 안정 정렬(Stable Sort) ■ 단점 - 시간복잡도가 최악, 최선, 평균 모두 O(n^2)으로, 굉장.. 2023. 3. 9.
[자료구조] 스택(Stack) / 큐(Queue) 스택(Stack) ■ 정의 - 데이터를 일시적으로 쌓아 놓는 자료구조 - 데이터의 입력과 출력 순서는 후입선출 (LIFO: Last In First Out) ■ 메소드 Stack s = new Stack(); Stack s = new Stack(int capacity); // 스택의 capacity 결정 메소드 의미 push(int item) 스택에 데이터를 저장 pop() 스택의 꼭대기에 있는 데이터를 제거하고, 그 값을 반환 isFull() 스택이 empty 상태인지 확인 isEmpty() 스택이 full 상태인지 확인 clear() 스택의 모든 요소를 삭제 peek() 스택의 가장 최상위(마지막)에 위치한 데이터 출력 capacity() 스택의 용량 확인 (스택 전체 크기) size() 스택의 크기.. 2023. 2. 22.