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); }