#include
#include
#include
typedef struct _TreeNode
{
int data;
struct _TreeNode*left;
struct _TreeNode*right;
}TreeNode;
void inserBst(TreeNode**r,int data)
{
TreeNode*t=*r;
if(*r==NULL)
{
r=(TreeNode)malloc(sizeof(TreeNode));
(*r)->data=data;
(*r)->left=(*r)->right=NULL;
}
else
{
while(1)
{
if(data>t->data)
{
if(t->right==NULL)
{
t->right=(TreeNode*)malloc(sizeof(TreeNode));
t->right->data=data;
t->right->left=t->right->right=NULL;
break;
}
t=t->right;
}
else
{
if(t->left==NULL)
{
t->left=(TreeNode*)malloc(sizeof(TreeNode));
t->left->data=data;
t->left->left=t->left->right=NULL;
break;
}
t=t->left;
}
}
}
}
void inserBst1(TreeNode**r,int data)
{
TreeNode*t=*r;;
{
if(t==NULL)
{
t=(TreeNode*)malloc(sizeof(TreeNode));
t->data=data;
t->left=t->right=NULL;
}
else
{
if(data>t->data)
inserBst1(&t->right,data);
else
inserBst1(&t->left,data);
}
}
}
void traverTree(TreeNode*r)
{
if(r)
{
printf("%d ",r->data);
traverTree(r->left);
traverTree(r->right);
// printf("\n");
}
}
TreeNode*search(TreeNode*r,int find)
{
int data=find;
while(r)
{
if(r->data==data)
return r;
else if(find>r->data)
r=r->right;
else
r=r->left;
}
return NULL;
}
TreeNode*midBst(TreeNode*r)
{
if(r)
{
while(r->left)
{
r=r->left;
}
return r;
}
return NULL;
}
/* 30
8 36
15 32 100
*/
int main()
{
TreeNode*root=NULL;
inserBst(&root,30);
inserBst(&root,8);
inserBst(&root,7);
inserBst(&root,6);
inserBst(&root,15);
inserBst(&root,36);
inserBst(&root,100);
inserBst(&root,32);
// inserBest(&root,);
traverTree(root);
printf("\n");
TreeNode*pfind=search(root,30);
if(pfind)
printf("find in %d\n",pfind->data);
else
printf("find none");
TreeNode*mi=midBst(root);
printf("%d\n",mi->data);
return 0;
}