#include "iostream"
#include "stdlib.h"
#define N 10
using namespace std;
typedef struct BitNode{
char data;
struct BitNode *Left;
struct BitNode *Right;
}BitNode,*BiTree;
void CreatBiTree(BiTree *T,char s)
{
if(*T==NULL)
{
*T=(BitNode*)malloc(sizeof(BitNode));
(*T)->data=s;
(*T)->Left=NULL;
(*T)->Right=NULL;
}
else
{
if((*T)->data>s)
CreatBiTree(&((*T)->Left),s);
else if((*T)->data<s)
CreatBiTree(&((*T)->Right),s);
else
return ;
}
}
//void Find(BiTree T,int s)
//{
//
// if(s>T->data)
// return Find(T->Right,s);
// else if(s<T->data)
// return Find(T->Left,s);
// else
// return T;
//}
int FindMin(BiTree T)
{
if(T!=NULL)
{
if(T->Left!=NULL)
FindMin(T->Left);
else
return T->data;
}
}
void FindMax(BiTree T)
{
if(T!=NULL)
while(T->Right!=NULL)
T=T->Right;
printf("%c/n",T->data);
}
void Delete(BiTree *T,char s)
{
if(T!=NULL)
{
if(s<(*T)->data)
Delete(&(*T)->Left,s);
else if(s>(*T)->data)
Delete(&(*T)->Right,s);
else
{
if((*T)->Left&&(*T)->Right)
{
(*T)->data=FindMin((*T)->Right);
//T->data=TmpCell->data;
Delete(&(*T)->Right,(*T)->data);
}
else
{
BitNode *TepCell=*T;
if((*T)->Right==NULL)
*T=(*T)->Left;
else if((*T)->Left==NULL)
*(T)=(*T)->Right;
free(TepCell);
}
}
}
}
void PreOder(BiTree T)
{
if(T)
{
printf("%c/n",T->data);
PreOder(T->Left);
PreOder(T->Right);
}
}
int main()
{
BiTree T=NULL;
char a[N]={'5','2', '3','6', '8', '7', '4', '1', '0', '9'};
for(int i=0;i<N;i++)
CreatBiTree(&T,a[i]);
Delete(&T,a[1]);
PreOder(T);
//printf("/n");
// FindMin(T);
// printf("/n");
// FindMax(T);
while(1);
}