#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
typedef struct treeNode {
int data;
treeNode* left;
treeNode* right;
};
treeNode* makeRootNode(int 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* rootNode) {
if (rootNode != NULL) {
printf("%3d", rootNode->data);
preorder(rootNode->left);
preorder(rootNode->right);
}
}
void inorder(treeNode* rootNode) {
if (rootNode != NULL) {
inorder(rootNode->left);
printf("%3d", rootNode->data);
inorder(rootNode->right);
}
}
void postorder(treeNode* rootNode) {
if (rootNode != NULL) {
postorder(rootNode->left);
postorder(rootNode->right);
printf("%3d", rootNode->data);
}
}
int main() {
treeNode* n9 = makeRootNode(15, NULL, NULL);
treeNode* n8 = makeRootNode(84, NULL, NULL);
treeNode* n7 = makeRootNode(61, NULL, NULL);
treeNode* n6 = makeRootNode(29, NULL, NULL);
treeNode* n5 = makeRootNode(72, NULL, NULL);
treeNode* n4 = makeRootNode(39, n8, n9);
treeNode* n3 = makeRootNode(57, n6, n7);
treeNode* n2 = makeRootNode(7, n4, n5);
treeNode* rootNode = makeRootNode(48, n2, n3);
printf("\n 전위 순회로 구현 : "); preorder(rootNode);
printf("\n 중위 순회로 구현 : "); inorder(rootNode);
printf("\n 후위 순회로 구현 : "); postorder(rootNode);
}