오늘은 전위표기법, 중위표기법, 후위표기법을 구현해보겠습니다.
전위 표기법:
void preorder(treeNode* root) {
if (root) {
printf("%c", root->data);
preorder(root->left);
preorder(root->right);
}
}
중위 표기법:
void inorder(treeNode* root) {
if (root) {
inorder(root->left);
printf("%c", root->data);
inorder(root->right);
}
}
후위 표기법:
void postorder(treeNode* root) {
if (root) {
postorder(root->left);
postorder(root->right);
printf("%c", root->data);
}
}
(A*B)-(C/D)를 전위,중위,후위 표기법을 이용하여 출력해보겠습니다
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
typedef struct treeNode {
char data;
struct treeNode* left;
struct treeNode* right;
}treeNode;
treeNode* makeRootNode(char data, treeNode* leftNode, treeNode* rightNode) {
treeNode* root = (treeNode*)malloc(sizeof(treeNode));
root->data = data;
root->left = leftNode;
root->right = rightNode;
return root;
}
//전위 표기법
void preorder(treeNode* root) {
if (root) {
printf("%c", root->data);
preorder(root->left);
preorder(root->right);
}
}
//중위 표기법
void inorder(treeNode* root) {
if (root) {
inorder(root->left);
printf("%c", root->data);
inorder(root->right);
}
}
//후위 표기법
void postorder(treeNode* root) {
if (root) {
postorder(root->left);
postorder(root->right);
printf("%c", root->data);
}
}
void main() {
treeNode* n7 = makeRootNode('D', NULL, NULL);
treeNode* n6 = makeRootNode('C', NULL, NULL);
treeNode* n5 = makeRootNode('B', NULL, NULL);
treeNode* n4 = makeRootNode('A', NULL, NULL);
treeNode* n3 = makeRootNode('/', n6, n7);
treeNode* n2 = makeRootNode('*', n4, n5);
treeNode* n1 = makeRootNode('-', n2, n3);
printf("전위 표기법:"); preorder(n1);
printf("\n중위 표기법:"); inorder(n1);
printf("\n후위 표기법:"); postorder(n1);
}
'코딩 이야기' 카테고리의 다른 글
[C언어] 이진 탐색트리 입력, 출력, 탐색 구현 (0) | 2021.11.07 |
---|---|
[C언어] 이진트리 전위,중위,후위 표기법으로 표기하기 (0) | 2021.11.05 |
[C언어] 연결리스트를 이용하여 큐 구현하기 (0) | 2021.11.04 |
[C언어] 스택(stack)을 이용하여 수식의 괄호 쌍 검사 (0) | 2021.11.02 |
[C언어] 스택 삽입(push), 삭제(pop),체크(peek) 구현 (0) | 2021.11.01 |