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
반응형