HackerRank/Data Structures

[HackerRank C] Tree : Preoreder Traversal

ruming 2021. 6. 27. 23:10

전위순회로 트리를 출력하는 문제이다. 위의 트리를 전위순회로 거치면 1 2 5 3 4 6 순이다.

 

void preOrder( struct node *root) {
    if(root)
        printf("%d ", root->data);
    if(root->left)
        preOrder(root->left);
    if(root->right)
        preOrder(root->right);
}

주의할 점은 root가 NULL이 아니어야 한다는 것이다.

전위 순회는 root->left->right 노드 순이다. 이 순서를 따라 재귀적으로 코드를 짜주면 된다.

if문으로 root가 null인지 아닌지 확인한 뒤 null이 아니라면 그 값을 출력한다. left 노드가 null이 아니면 preOrder 함수에 root->left를 인자로 넣고 left가 비었으면 right를 검사해 root->right를 인자로 넣는다. 이렇게 하면 전위순회가 가능하다.