C, C++ 문제풀이

이진트리 순회

륵기 2020. 10. 6. 22:58
728x90
반응형

 

이진트리 구조

typedef struct{
	int data; //노드 데이터
    struct Node *leftChild;
    struct Node *rightChild;
}Node;

Node* initNode(int data, Node* leftChild, Node* rightChild){
	Node* node = (Node*)malloc(sizeof(Node));
    node->data = data;
    node->leftChild = leftChild;
    node->rightChild = rightChild;
    return node;
}

 

전위 순회

자기 자신 - 왼쪽 노드 - 오른쪽 노드

void preorder(Node* root){
	if(root){
    	printf("%d",root->data);
        preorder(root->leftChild);
        preorder(root->rightChild);
    }
}

중위 순회

왼쪽 자식 - 자기 자신 - 오른쪽 자식

void inorder(Node* root){
	if(root){
    	inorder(root->leftChild);
        printf("%d", root->data);
        inorder(root->rightChild);
    }
}

후위 순회

왼쪽 자식 - 오른쪽 자식 - 자기 자신

void postorder(Node* root){
	if(root){
    	postorder(root->leftChild);
        postorder(root->rightChild);
        printf("%d",data);
    }

}

 

메인 함수

int main(void){
	Node* n7 = initNode(50, NULL, NULL);
    Node* n6 = initNode(37, NULL, NULL);
    Node* n5 = initNode(23, NULL, NULL);
    Node* n4 = initNode(5, NULL, NULL);
    Node* n3 = initNode(48, n6, n7);
    Node* n2 = initNode(17, n4, n5);
    Node* n1 = initNode(30, n2, n3);
    preorder(n1);
    printf("/n");
    inorder(n1);
    printf("\n");
    postorder(n1);
    system("pause");
    return 0;
}
728x90
반응형