본문 바로가기
코딩/잡다한 C언어

전위 순회 구현

by jsjin 2023. 11. 30.
728x90

트리에 대한 기본 개념(자식, 루트 노드 등)을 알고 있다는 것을 전제로 합니다. + 재귀함수

 

전위 순회 (Preorder)는 트리를 순회하는 방법 중 하나로,

[루트 노드 -> 왼쪽 자식 -> 오른쪽 노드] 순서대로 순회한다.

 

트리 구조

[ A -> B -> D -> E -> C -> F -> G ]

이 순서로 순회를 한다.

 


이를 C언어로 구현하면 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
 
typedef struct TreeNode
{
    int data;
    struct TreeNode *left, *right;
} treenode;
 
treenode n1 = {5NULLNULL};
treenode n2 = {10&n1, NULL};
treenode n3 = {20NULLNULL};
treenode n4 = {30NULLNULL};
treenode n5 = {25&n3, &n4};
treenode n6 = {15&n2, &n5};
treenode *root = &n6;
//        15
//      /   \
//     10     25
//    /     /   \
//  5     20     30
 
void preorder(treenode* node){
    if(node != NULL){
        printf("%d ", node->data);
        preorder(node->left);
        preorder(node->right);
    }
    return;
}
 
int main(){
    preorder(root);
}
cs

 

[ 15 10 5 25 20 30 ] 순서대로 출력이 된다.

728x90

'코딩 > 잡다한 C언어' 카테고리의 다른 글

<String.h> 유용한 함수  (0) 2023.12.17
중위 순회 구현  (0) 2023.11.30
후위 순회 구현  (0) 2023.11.29
C언어로 Single Linked List 구현하기  (0) 2023.06.02
C언어로 Midi 입력을 받는 코드 만들기  (0) 2023.05.24