#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
typedef struct treeNod
{
char data;
struct treeNod *left;
struct treeNod *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) //D-L-R
{
if(root)
{
printf("%c", root->data);
preorder(root->left);
preorder(root->right);
}
}
void inorder(treeNode *root) // L-D-R
{
if(root)
{
inorder(root->left);
printf("%c", root->data);
inorder(root->right);
}
}
void postorder(treeNode *root) // L-R-D
{
if(root)
{
postorder(root->left);
postorder(root->right);
printf("%c", root->data);
}
}
*/
treeNode *searchBTS(treeNode *root, char a)
{
treeNode *p=root;
if(p==NULL)
{
return NULL;
}
// printf("%c ->",p->data);
if(a==p->data)
{
return p;
}
else if(a < p->data)
{
return searchBTS(p->left,a);
}
else
{
return searchBTS(p->right,a);
}
}
void insertBST(treeNode* p, char b)
{
treeNode* q;
while(p!=NULL)
{
printf("%c ->",p->data);
q=p;
if(b < p->data)
{
p=p->left;
}
else if(b > p->data)
{
p=p->right;
}
}
treeNode *NewNode = (treeNode*)malloc(sizeof(treeNode));
NewNode->data = b;
NewNode->left = NULL;
NewNode->right = NULL;
//if(p==NULL)
//{
// p=NewNode;
//}
//else
if(b<q->data)
{
q->left=NewNode;
}
else
{
q->right=NewNode;
}
}
void inorderprint(treeNode *root) // L-D-R
{
if(root)
{
inorderprint(root->left);
printf(" %c -", root->data);
inorderprint(root->right);
}
}
int main()
{
treeNode *n7=makeRootNode('G',NULL,NULL);
treeNode *n6=makeRootNode('E',NULL,NULL);
treeNode *n5=makeRootNode('C',NULL,NULL);
treeNode *n4=makeRootNode('A',NULL,NULL);
treeNode *n3=makeRootNode('F',n6,n7);
treeNode *n2=makeRootNode('B',n4,n5);
treeNode *n1=makeRootNode('D',n2,n3);
// printf("search A : ");
searchBTS(n1,'A');
// printf("\n");
printf(" tree : ");
inorderprint(n1);
printf("\n");
insertBST(n1, '@');
printf("\nafter : ");
inorderprint(n1);
printf("\n");
/*
printf("\n preorder: \n");
preorder(n1);
printf("\n inorder: \n");
inorder(n1);
printf("\n postorder: \n");
postorder(n1);
*/
getchar();
}



