자료구조 C 실습 · 이진 트리 · Q7
이진 트리 Q7. 가장 작은 값 찾기
C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.
이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.
이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.
Section E Binary Tree smallestValue
일반 이진 트리 전체를 순회해 최솟값을 찾는 문제다. BST가 아니라 일반 트리이므로 왼쪽 끝만 내려가면 안 된다. 결국 모든 노드 값을 훑어 현재 최소와 비교해야 한다.
한눈에 보는 문제 정보
원본 파일:
C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Structures\Binary_Tree\Q7_E_BT.c대상 함수:
smallestValue카테고리: 이진 트리
문제에서 요구한 것
메뉴와 출력 문자열을 보면 이 파일은 특정 자료구조 연산 하나를 직접 구현하도록 만든 실습 문제다. 입력 흐름은 아래처럼 정리할 수 있다.
- 1: Create a binary tree.
- 2: Smallest value
- 0: Quit
- The resulting binary tree is
- Smallest value of the binary tree is: %d
- Input an integer that you want to add to the binary tree. Any Alpha value will be treated as NULL.
핵심 구현 흐름
STEP 1
현재 노드를 기준값으로 삼는다.
STEP 2
왼쪽과 오른쪽 서브트리에서 각각 최솟값을 구한다.
STEP 3
세 값 중 가장 작은 값을 반환한다.
핵심 코드
문제 파일 전체를 다 옮기기보다, 실제로 구현해야 했던 함수만 뽑아서 보면 로직이 더 선명하게 들어온다.
핵심 코드:
smallestValueint smallestValue(BTNode *node)
{
if (node == NULL)
{
return 999;
}
int minval = node->item;
if ( minval > smallestValue(node->left) )
{
minval = smallestValue(node->left);
}
if ( minval > smallestValue(node->right) )
{
minval = smallestValue(node->right);
}
return minval;
}
구현할 때 체크할 점
- 빈 트리의 반환값을 무엇으로 둘지 먼저 정해야 한다.
- 일반 트리와 BST를 혼동하면 탐색 범위를 잘못 줄이게 된다.
마무리
이 문제는 거대한 알고리즘을 묻는 문제라기보다, 자료구조를 실제 포인터 연결과 순회 흐름으로 이해하고 있는지 확인하는 실습에 가깝다. BST가 아니라 일반 트리이므로 왼쪽 끝만 내려가면 안 된다. 결국 모든 노드 값을 훑어 현재 최소와 비교해야 한다.
같은 카테고리의 다른 문제와 함께 보면, 연결 리스트에서는 재배선, 스택과 큐에서는 순서 제어, 트리에서는 재귀 순회라는 감각이 반복해서 나온다는 점도 같이 볼 수 있다.
'크래프톤 정글 > 정글에서 문제풀기' 카테고리의 다른 글
| 이진 탐색 트리 Q1. 레벨 순서 순회하기 (0) | 2026.04.09 |
|---|---|
| 이진 트리 Q8. 증손자가 있는 노드 찾기 (0) | 2026.04.09 |
| 이진 트리 Q6. 기준값보다 작은 노드 출력하기 (0) | 2026.04.09 |
| 이진 트리 Q5. 좌우 반전하기 (0) | 2026.04.09 |
| 이진 트리 Q4. 홀수 값 노드의 합 구하기 (0) | 2026.04.09 |