3 * 2 + 30 / 6을 트리로 구현하며 트리를 이해한다

#include <stdio.h>
#include <stdlib.h>
typedef struct Tree {
int data;
struct Tree * left;
struct Tree * right;
}TreeNode;
void inorder_rec(TreeNode *t) {
if (t != NULL) {
inorder_rec(t->left);
if (t->data == '+' || t->data == '*' || t->data == '/')
printf("%c ", t->data);
else
printf("%d ", t->data);
inorder_rec(t->right);
}
}
void insert_right(TreeNode *t, int data) {
TreeNode * ptr = (TreeNode *)malloc(sizeof(TreeNode));
ptr->data = data;
ptr->right = NULL;
ptr->left = NULL;
t->right = ptr;
}
void insert_left(TreeNode *t, int data) {
TreeNode * ptr = (TreeNode *)malloc(sizeof(TreeNode));
ptr->data = data;
ptr->right = NULL;
ptr->left = NULL;
t->left = ptr;
}
TreeNode cons_threadTree(TreeNode * root) {
// root 노드
root->data = '+';
insert_left(root, '*');
insert_right(root,'/');
// root노드의 왼쪽 서브 트리
insert_left(root->left, 3);
insert_right(root->left, 2);
// root노드의 오른쪽 서브 트리
insert_left(root->right, 30);
insert_right(root->right, 6);
return *root;
}
int main() {
TreeNode T;
T = cons_threadTree(&T);
printf("\n중위 순회의 순환적 버전: ");
inorder_rec(&T);
}
