Published 2021. 5. 20. 23:14
# Tree: Height of a Binary Tree (Trees)
[문제]
[코드]
int getHeight(struct node* root) {
// Write your code here
int left, right, height;
if(root == NULL)
return -1;
left = getHeight(root->left);
right = getHeight(root->right);
height = (left > right ? left : right) + 1;
return height;
}
[코드설명]
Divide And Conquer 방식으로 해결했다.
각각 left와 right로 분할해서 각각의 height를 구하고, 두 값을 비교하여 더 큰 값에 1을 더하여 height에 저장한다.
이때 root가 NULL이면은 -1을 반환한다.
[채점 결과]
# Tree: Inorder Traversal (Trees)
[문제]
[코드]
void inOrder(struct node *root) {
if(root)
{
inOrder(root->left);
printf("%d ", root->data);
inOrder(root->right);
}
}
[코드설명]
재귀적으로 해결했다.
링크를 따라 left로 내려가고 root가 NULL일 때 아무것도 하지 않고 함수를 종료한다. 그리고 이전 함수로 돌아와 현재 root를 출력한 후 다시 right 링크를 따라 내려간다. 이렇게 반복하다 보면 노드는 left 링크에 있는 노드 먼저 출력되고, 그 다음엔 현재 노드를 출력한 후 right링크에 있는 노드를 출력하게 된다.
[채점 결과]