6월 19일 발표날에 발표할 문제풀이 내용입니다.
node
를 루트로 하는 서브트리의 높이를 반환한다 node = NULL
인 경우, -1
을 반환한다-1
로 설정한 이유: 리프 노드가 루트인 트리의 높이를 0으로 처리하기 위해height
를 계산할 때 -1 + 1 = 0
이 된다int hasGreatGrandchild(BTNode *node)
{
// node를 루트로 가진 서브트리의 높이를 반환
// 높이가 3 이상이면, 이 노드는 증손주를 가짐
// 종료조건 (NULL 노드의 높이는 -1로 정의)
if (node == NULL) return -1;
// 왼쪽, 오른쪽 서브트리의 높이를 재귀적으로 계산
int left = hasGreatGrandchild(node -> left);
int right = hasGreatGrandchild(node -> right);
// 현재 트리의 높이 = 더 높은 서브트리 높이 + 1
int height = left > right ? left + 1 : right + 1;
// 현재 서브트리의 높이가 3 이상이면
// 루트 노드는 증손주를 가짐
if (height >= 3) {
printf("%d ", node -> item);
}
// 현재 서브트리의 높이를 반환
return height;
}
이게 이제 제 답지입니다.