CS/C 8

C언어로 이진 탐색 트리 구현하기

✅ 개요노드 삽입루트에 주목한다. 여기서 주목하는 노드를 node라고 하자.삽입하는 key과 주목 노드 node의 키를 비교한다.key = node인 경우 : 삽입을 실패하고 종료한다.key 왼쪽 자식 노드가 없으면, 그 자리에 노드를 삽입하고 종료한다.왼쪽 자식 노드가 있으면, 주목 노드를 왼쪽 자식 노드로 옮긴다.key > node인 경우 :오른쪽 자식 노드가 없으면, 그 자리에 노드를 삽입하고 종료한다.오른쪽 자식 노드가 있으면, 주목 노드를 오른쪽 자식으로 옮긴다.2번 과정으로 돌아간다.노드 삭제1️⃣ 리프 노드를 삭제하는 경우삭제할 노드가 부모 노드의 왼쪽 자식이라면, 부모의 왼쪽 포인터를 NULL로 한다.삭제할 노드가 부모 노드의 오른쪽 자식이라면, 부모의 오른쪽 포인터를 NULL로 한다.2️..

CS/C 2025.04.15

GPT야, 3.9와 3.11 중에 무엇이 더 큰 수야?

최근 온라인 상에서 화제가 되고 있는 사진이 있습니다. 바로 챗GPT에게 3.9와 3.11 중에 더 큰 수를 묻자 3.11이 더 큰 수라고 대답하는 모습이었는데요.아무리 GPT가 멍청하다지만... 설마 그 정도도 모르겠어요? 제가 직접 GPT에게 물어봤습니다.놀랍게도 GPT는 당당하게 3.11이 3.9보다 더 큰수라고 대답했습니다. 이유를 물어도 무슨 이상한 이유만 대고 말이죠.그래서 다시 물어봤습니다. 3.90과 3.11 중에서는 3.90이 더 크다고 정상적으로 대답했습니다. 그리고 3.90이 3.9와 같다는 것도 알고 있고요.3.9는 3.90과 동일하지만, 3.11보다 작다는 게 무슨 소리죠? 제가 3.90이 3.11보다 더 크지 않느냐고 되묻자 GPT는 결국에는 3.11이 3.9와 3.90보다 더 ..

CS/C 2025.02.07

C언어로 BFS 구현하기

BFS(Breadth-First Search)는 그래프나 트리를 탐색하는 알고리즘 중 하나로, 시작 정점에서 가까운 정점부터 탐색하는 방식입니다. BFS는 큐(Queue)를 사용하여 구현되며, 각 정점을 방문할 때마다 그 정점과 연결된 모든 인접 정점을 큐에 추가합니다.BFS의 동작 방식시작 정점을 방문하고 큐에 추가합니다.큐에서 정점을 꺼내 그 정점과 연결된 모든 인접 정점 중 아직 방문하지 않은 정점을 방문합니다.방문한 정점들을 큐에 추가합니다.큐가 비어 있을 때까지 2번과 3번을 반복합니다.C언어로 BFS 구현하기#include #include #define MAX 100// 그래프를 표현하기 위한 인접 리스트 구조체typedef struct Node { int vertex; struct..

CS/C 2025.02.07

C언어로 DFS 구현하기

DFS(Depth-First Search)는 그래프나 트리를 탐색하는 알고리즘 중 하나로, 가능한 깊이까지 탐색한 후, 더 이상 탐색할 수 없으면 마지막 분기점으로 돌아가 다른 경로를 탐색하는 방식입니다. DFS는 주로 스택을 이용하여 구현되며, 재귀적인 방법으로도 쉽게 표현할 수 있습니다.DFS의 동작 방식시작 정점을 방문하고, 해당 정점을 스택에 추가합니다.스택의 최상위 정점을 꺼내 그 정점과 연결된 모든 정점 중 아직 방문하지 않은 정점을 방문합니다.해당 정점을 스택에 추가하고, 다시 2번으로 돌아갑니다.스택이 비어있을 때까지 반복합니다.C언어로 DFS 구현하기#include #include #define MAX 100// 그래프를 표현하기 위한 인접 리스트 구조체typedef struct Node..

CS/C 2025.02.07