목록Algorithm/Algorithm 공부 (14)
Over the limit
힙이란? -바이너리 트리의 한 종류 -루트 노드가 언제나 트리의 최대값(각 노드의 값이 자식 노드의 값보다 크거나 같음) 또는 최소값 -힙은 완전 바이너리 트리다. 중간에 빈 노드가 없다. 구분 조건 루트 노드의 키 값 최대 힙(Max Heap) 부모 노드의 키 값>=자식 노드의 키 값 트리 중에서도 최댓값 최소 힙(Min Heap) 부모 노드의 키 값 각 노드가 모든 하위 레벨의 노드보다 크거나 같지 않음. typedef struct ArrayHeapType { int maxCount; int currentCount; HeapNode *pData; }ArrayMaxHeap, ArrayMinHeap; ArrayMaxHeap* createArrayMaxHeap(int maxCount) { ArrayMaxH..
바이너리 검색 미리 정렬된 데이터를 대상으로 검색 범위를 반으로 감소시켜 가면서 검색 키를 찾는 검색 방법 -찾으려는 데이터보다 키가 작으면 왼쪽으로, 반대는 오른쪽으로 이동 -이동 후 다시 반씩 비교하는 바이너리 서치 실행 binarysearchrecursive(values, start, end, key) { int ret=-1; //FAIL int middle=0; if(start

이진 트리(Binary Tree) 순회란 ? 트리의 모든 노드를 한 번씩 방문하는 것 이진 트리(Binary Tree) 순회의 예 현재 노드(V), 왼쪽 서브트리(L), 오른쪽 서브트리(R)중 어떤 것을 먼저 방문 할지에 따라 달라짐 1. 전위 순회 현재 노드(V) -> 왼쪽 서브트리(L) -> 오른쪽 서브트리(R) 현재 노드를 방문함 : 현재 노드의 데이터를 처리함 2. 중위 순회 왼쪽 서브트리(L) -> 현재 노드(V) -> 오른쪽 서브트리(R) 현재 노드를 방문하기 전에 왼쪽 서브트리가 모두 방문 되어야 한다는 점이 핵심 3. 후위 순회 왼쪽 서브트리(L) -> 오른쪽 서브트리(R) -> 현재 노드(V) 현재 노드를 방문하기 전에 왼쪽 서브트리와 오른쪽 서브트리가 모두 방문 되어야 한다는 점이 핵심..

vector는 C++표준 라이브러리 (Standard Template Library)에 있는 컨테이너로 사용자가 손쉽게 사용하기 위해 정의된 클래스이다. 왜 vector를 사용하냐면 동적으로 원소를 추가할 수 있으며, 이때 크기가 자동을 늘어난다는 장점이 있기 때문이다. 하지만, 배열과 마찬가지로 원소들이 하나의 메모리 블록에 연속하게 저장되는 과정에서 메모리 재할당이 발생할 수 있고, 이로 인해 부하가 발생하는 것이 단점이다. v.begin() - 벡터 시작점의 주소 값 반환 v.front() - 벡터의 첫번째 요소 접근 v.back() - 벡터의 마지막 요소 접근 v.end() - 벡터 (끝부분+1) 주소값 반환 v.size() - 벡터가 생성된 크기 v.capacity() - 벡터의 최대 할당 크기..