게시물 확인하시고 공부에 도움이 됐으면 좋겠습니다.
코드를 확인해주세요
더보기
#include <stdio.h>
#include <stdlib.h>
typedef char ElementType;
typedef struct tagNode {
struct tagNode* left;
struct tagNode* right;
ElementType data;
} Node;
Node* CreateNode(ElementType newData);
void DestroyNode(Node* node);
void DestroyTree(Node* root);
void PreOrderPrintTree(Node* node);
void InOrderPrintTree(Node* node);
void PostOrderPrintTree(Node* node);
//노드생성
Node* CreateNode(ElementType newData)
{
Node* newNode = (Node*)
malloc(sizeof(Node));// 노드를 위한 메모리 할당
newNode->left = NULL;
newNode->right = NULL;
newNode->data = newData;
return newNode;
}
//노드 파괴
void DestroyNode(Node* node)
{
free(node);
}
//후위순위를 활용한 트리파괴
void DestroyTree(Node* root)
{
if(root == NULL)
return;
DestroyTree(root->left);// 왼쪽 하위 트리 소멸
DestroyTree(root->right); //오른쪽 하위 트리 소멸
DestroyNode(root); // 루트 노드 소멸
}
// 전위 순회
void PreOrderPrintTree(Node* node) {
if(node == NULL)
return;
printf(" %c", node->data); // 부모 노드 출력
PreOrderPrintTree(node->left);// 왼쪽 하위 트리 출력
PreOrderPrintTree(node->right);// 오른쪽 하위 트리 출력
}
//중위 순회
void InOrderPrintTree(Node* node) {
if(node == NULL)
return;
InOrderPrintTree(node->left);// 왼쪽 하위 트리 출력
printf(" %c", node->data);// 부모 노드 출력
InOrderPrintTree(node->right);// 오른쪽 하위 트리 출력
}
//후위 순회
void PostOrderPrintTree(Node* node) {
if(node == NULL)
return;
PostOrderPrintTree(node->left);// 왼쪽 하위 트리 출력
PostOrderPrintTree(node->right);// 오른쪽 하위 트리 출력
printf(" %c", node->data);// 부모 노드 출력
}
void main() {
Node* A = CreateNode('A'); // 노드 생성
Node* B = CreateNode('B');
Node* C = CreateNode('C');
Node* D = CreateNode('D');
Node* E = CreateNode('E');
Node* F = CreateNode('F');
Node* G = CreateNode('G');
A->left = B; // 트리에 노드 추가
B->left = C;
B->right = D;
A->right = E;
E->left = F;
E->right = G;
printf("PreOrder...\n"); // 트리 출력
PreOrderPrintTree(A);
printf("\n\n");
printf("InOrder...\n");
InOrderPrintTree(A);
printf("\n\n");
printf("PostOrder...\n");
PostOrderPrintTree(A);
printf("\n");
DestroyTree(A); // 소멸
}
더 많은 C언어 글이 궁금하다면?
https://chuinggun.tistory.com/category/C%EC%96%B8%EC%96%B4
'C언어' 카테고리의 다른 글
[C언어] 사용자로부터 입력받은 N단부터 N단까지 구구단을 출력하는 프로그램을 작성하시오 (0) | 2022.12.05 |
---|---|
[C언어] 덧셈 뺄셈 나눗셈 곱셈을 실행하는 계산기 프로그램을 작성하시오 (0) | 2022.12.04 |
[C언어] 트리를 작성하시오 (0) | 2022.12.03 |
[C언어] 2진탐색트리 이진탐색트리를 작성하시오 (0) | 2022.12.03 |
[C언어] 단순연결리스트를 작성하시오 (0) | 2022.12.03 |
댓글