20260312
/*
// 이진트리
#include <stdio.h>
#include <stdlib.h>
typedef int BTData;
typedef struct _bTreeNode
{
BTData data;
struct _bTreeNode* left;
struct _bTreeNode* right;
}BTreeNode;
BTreeNode* MakeBTreeNode(void)
{
BTreeNode* tmp = (BTreeNode*)malloc(sizeof(BTreeNode));
tmp->left = NULL;
tmp->right = NULL;
return tmp;
}
BTData GetData(BTreeNode* bt)
{
return bt->data;
}
void SetData(BTreeNode* bt, BTData data)
{
bt->data = data;
}
BTreeNode* GetLeftSubTree(BTreeNode* bt)
{
return bt->left;
}
BTreeNode* GetRightSubTree(BTreeNode* bt)
{
return bt->right;
}
void MakeLeftSubTree(BTreeNode* main, BTreeNode* sub)
{
if(main->left != NULL)
{
free(main->left);
}
main->left = sub;
}
void MakeRightSubTree(BTreeNode* main, BTreeNode* sub)
{
if(main->right != NULL)
{
free(main->right);
}
main->right = sub;
}
void Inorder(BTreeNode* bt)
{
if(bt == NULL) return ;
Inorder(bt->left);
printf("%d ", bt->data);
Inorder(bt->right);
}
void Preorder(BTreeNode* bt)
{
if(bt == NULL) return ;
printf("%d ", bt->data);
Preorder(bt->left);
Preorder(bt->right);
}
void Postorder(BTreeNode* bt)
{
if(bt == NULL) return ;
Postorder(bt->left);
Postorder(bt->right);
printf("%d ", bt->data);
}
int main()
{
BTreeNode* bt1 = MakeBTreeNode();
BTreeNode* bt2 = MakeBTreeNode();
BTreeNode* bt3 = MakeBTreeNode();
BTreeNode* bt4 = MakeBTreeNode();
SetData(bt1, 1);
SetData(bt2, 2);
SetData(bt3, 3);
SetData(bt4, 4);
MakeLeftSubTree(bt1, bt2);
MakeRightSubTree(bt1, bt3);
MakeLeftSubTree(bt2, bt4);
Inorder(bt1);
printf("\n");
Preorder(bt1);
printf("\n");
Postorder(bt1);
return 0;
}
*/
// 수식트리
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int BTData;
struct _bTreeNode* stack = NULL;
typedef struct _bTreeNode
{
BTData data;
struct _bTreeNode* left;
struct _bTreeNode* right;
}BTreeNode;
BTreeNode* MakeBTreeNode(void)
{
BTreeNode* tmp = (BTreeNode*)malloc(sizeof(BTreeNode));
tmp->left = NULL;
tmp->right = NULL;
return tmp;
}
BTData GetData(BTreeNode* bt)
{
return bt->data;
}
void SetData(BTreeNode* bt, BTData data)
{
bt->data = data;
}
BTreeNode* GetLeftSubTree(BTreeNode* bt)
{
return bt->left;
}
BTreeNode* GetRightSubTree(BTreeNode* bt)
{
return bt->right;
}
void MakeLeftSubTree(BTreeNode* main, BTreeNode* sub)
{
if(main->left != NULL)
{
free(main->left);
}
main->left = sub;
}
void MakeRightSubTree(BTreeNode* main, BTreeNode* sub)
{
if(main->right != NULL)
{
free(main->right);
}
main->right = sub;
}
void Postorder(BTreeNode* bt)
{
if(bt == NULL) return ;
Postorder(bt->left);
Postorder(bt->right);
printf("%d ", bt->data);
}
BTreeNode* MakeExpTree(char exp[])
{
}
int main()
{
char exp[] = "12+7*";
BTreeNode* eTree = MakeExpTree(exp);
return 0;
}

