다음 tree_height() 함수는 이진 트리의 루트 노드를 매개변수… | [7급 국가직 자료구조론] 22년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 22년 1회차
다음 tree_height() 함수는 이진 트리의 루트 노드를 매개변수로 받아 트리의 높이를 반환한다. (가)~(다)에 들어갈 내용을 바르게 연결한 것은?typedef struct node {
int value;
struct node *left;
struct node *right;
} node;
int tree_height (node *ptr) {
int left_h, right_h;
if (ptr == NULL)
return 0;
else {
left_h = tree_height(ptr->left);
right_h = tree_height(ptr->right);
if ( [ (가) ] )
return [ (나) ] ;
else
return [ (다) ] ;
}
}(가) (나) (다)1
left_h > right_h left_h right_h
2
left_h > right_h left_h + 1 right_h + 1
3
left_h < right_h left_h right_h
4
left_h < right_h left_h + 1 right_h + 1
해설
(가) left_h > right_h, (나) left_h + 1, (다) right_h + 1이다.
트리 높이는 두 서브트리 높이 중 큰 값에 현재 노드 1을 더한 것이다. 왼쪽이 더 크면 left_h + 1, 아니면 right_h + 1을 반환한다.
- left_h > right_h, left_h, right_h: 현재 노드를 더하지 않아 어떤 트리든 높이가 0이 된다.
- left_h < right_h, left_h, right_h: 작은 쪽을 고르고 1도 더하지 않는다.
- left_h < right_h, left_h + 1, right_h + 1: 조건이 뒤집혀 더 낮은 서브트리 기준으로 높이를 반환한다.
오류나 개정된 내용이 보이면 알려주세요