전위순회로 트리를 출력하는 문제이다. 위의 트리를 전위순회로 거치면 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를 인자로 넣는다. 이렇게 하면 전위순회가 가능하다.
'HackerRank > Data Structures' 카테고리의 다른 글
[HackerRank] Linked Lists > Print the Elements of a Linked List (0) | 2021.08.14 |
---|---|
[HackerRank C] Tree : Inorder Traversal (0) | 2021.06.27 |
[HackerRank C] Tree : Postorder Traversal (0) | 2021.06.27 |
[HackerRank(C)] Arrays : Left Rotation (0) | 2021.05.29 |
[HackerRank] Arrays : 2D Array - DS (0) | 2021.04.10 |