동작이 되지 않던 코드를 수정 insertElementBST : 수정 전의 형태를 하게 되면 p->pLeftChild, p->pRightChild 가 가르키는 곳이 무엇인지 정해지지 않은 상태에서 element 로 할당이 되었기 때문에, 이후 삽입과정에서 element 를 찾을 수 없어서 오류가 발생하게 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 if (pBinSearchTree->pRootNode == NULL) { pBinSearchTree->pRootNode = element; return TRUE; } while(TRUE) { if (p == NULL) { p = element; return TRUE; } if (p->key > elem..
insert 부분에서는 문제점을 어찌저찌 파악을 해서, 해결을 했는데, 삭제 부분에서 필요한 요소라 생각되는 4가지 삭제할 노드 삭제할 노드의 부모 노드 삭제할 노드 자리에 이동할 노드 이동할 노드의 부모 노드 다시 하나하나 파악해서 코드를 다시 짜봐야 될 것만 같다. 오늘의 정리를 좀 하려고 했으나, 집중력이 떨어진 관계로 ㅠㅠ 집 가서 씻고 낼 미라클 모닝을 위한 잠자리에 들어야 될 것만 같다. 또한, 잔여백신을 맞았기에 이후 체력 관리에 신경 써야 하는 부분이니 내일 더 열심히 해야겠다는 마음가짐으로 내일 블로그를 마저 써야지 미뤄진 일들을 내일의 내가 1.5배 더 해야 하는 거겠지...
BST 이진트리 중에서 탐색을 위해 고안된 것으로 노드 위치를 키 값 기준으로 결정된다. 이진 탐색트리의 효율 편향 이진트리, 모습에 따라 탐색 효율이 달라지기에 최악의 경우에는 N이기에 염두를 해야 한다. 이진 탐색트리의 조건 노드 N에 대하여 왼쪽 하위트리에 있는 노드는 N보다 작다. 노드 N에 대하여 오른쪽 하위트리에 있는 노드는 N보다 크다. 노드 N의 왼쪽 하위트리와 오른쪽 하위트리도 이진 탐색트리이다. 키값은 유일 구현해야 하는 사항 이진 탐색트리의 탐색 이진 탐색트리의 삽입 탐색을 전제로 삽입 트리의 루트로부터 시작해서 삽입할 키와 하위 트리의 키과 비교 (반복) 이진 탐색트리의 삭제 삭제할 노드가 리프노드 삭제할 노드가 자식노드 하나만 있는 경우 삭제할 노드가 자식노드 두 개 있는 경우 이..
Heap 우선순위 큐를 구현하기 위한 자료구조, 완전 이진 트리의 형태로 구성 최대값 및 최솟값을 찾아내는 연산을 빠르기 하기 위한 용도로 사용 큐는 여기 글에서 설명이 되어있고, 우선순위 큐는 먼저 들어온 데이터가 아닌 우선순위가 높은 데이터가 먼저 나가는 형태 특징 완전이진트리의 형태 부모노드와 자식노드 간에만 대소 관계가 성립(형제 사이에는 정해지지 않는다) 중복된 값 허용 복잡도 Max Heap (최대 힙) 부모노드의 키값이 자식노드의 키값보다 항상 큰 힙 루트노드의 값은 최대값 Min Heap (최소 힙) 부모노드의 키값이 자식노드의 키값보다 항상 작은 힙 루트노드의 값은 최솟값 연산 createHeap() : 히프 생성 deleteHeap() : 히프 삭제 insert() : 자료 추가 트리의..
Tistory 를 보게 되면, 코드 블록을 통해서 코드를 적을 때는 이쁘지만 블로그에 올리게 되면 투박한 그냥 코드를 보게 된다. 그게 좀 답답하기도 하고 싫어서 찾아본 결과 사이트를 통해서 좀 더 이쁘게 꾸밀 수 있다. 이왕 나의 블로그를 누군가를 볼 때 괜찮게 보기 위해서는 귀찮음을 가지고서라도 해야 될 거 같아서, 해당 사이트에서 코드를 입력하고 html 형식을 복사해 와서 글쓰기에서 html 모드로 변경하여 글을 쓰면 된다. 예시로는 ▼▼▼▼▼▼▼ 아래와 같이 변경 가능▼▼▼▼▼▼▼ 추가적으로 시도해 볼 정보 : 사이트(수정 21.9.15)
계층적인 관계를 나타내는 데 편리한 것이 트리로써, 트리의 구성 요소에 해당 하는 것을 노드라 칭한다 트리의 개념 Root Node : 부모가 없는 노드 (원조격인 노드) leaf or Terminal Node (단일 노드) : 자식이 없는 노드 Internal Node : 리프 노드를 제외한 모든 노드 부모 노드 : B, G 노드의 부모 노드는 F이다. 자식 노드 : F 노드의 자식 노드는 B, G이다. 선조 노드 : 주어진 노드의 상위에 있는 노드들, B, F는 D의 선조 노드이다. 후손 노드 : 역으로 어떤 노드의 하위에 있는 노드들, F의 후손은 그 아래 모든 노드들이다. 형제 노드 : 같은 부모를 두고 있는 노드들, B, G 노드는 형제 노드이다. 트리의 차수 : 자식 노드의 개수 트리의 레벨 ..
취업을 하려면, 해야한다. 운동을 꾸준히 하면 살빠진다. 이러한 말들은 결국 지켜지지 않았기에, 목표를 이루기 위해서 환경을 만들어 보려한다. 지금 아침에 일찍 일어나서 30분간 걸어보자로 시작했던 런&리드 어느새 2개월이 흘러갔고, 다음 주 9월 13일부터 제목과 같이 하루 1잔디 1블로그를 42 카뎃들과 진행을 하고자 한다. 될 지는 모르겠지만... 삭막한 토지에 잔디를 열심히 심어봐야지 설치하고 깃허브에 접속하면 3D로 볼 수 있다 1블로그 무슨 이야기를 써야할까? 내가 공부한 것을 최대한 써보자는 생각이 환경적으로 써야하는 걸 강제적으로 하다보니, 분명 꾸준히 공부를 마지못해 하더라도 10분 이상의 정리를 하는 시간을 가질테니 좋은 방향성이라 생각한다. 본격적 단체로 건강한 정신과 육체를 가지는 ..
정수형 상수에 이름을 붙여서 코드를 이해하기 쉽게 만들어 준다. enumeration 이라는 열거, 목록의 뜻에서 따온 키워드 enum 열거형 이름 변수이름; enum 열거형이름 { 값1 = 초깃값, 값2, 값3 }; enum DayofWeek { Sunday = 0, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; int main() { enum DayOfWeek week; // 열거형 변수 선언 week = Tuesday; // 열거형 값 할당 printf("%d\n", week); // 2 의 값 출력 return 0; } 열거형의 값은 처음에만 할당해주면 아래 오는 값들은 1씩 증가하면서 자동으로 할당 연속되지 않은 불규칙한 값을 사용시에는 ..