# 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링크에 있는 노드를 출력하게 된다.

 

[채점 결과]

 

 

 

 

복사했습니다!