typedef struct node
{
struct node *lchild,rchild;
DataType data;
}*BiTree,BiNode;
BiTree *T;
void InitBiTree(BiTree *T)
{
*T = NULL;
}
void CreateBiTree(BiTree *T)
{
char ch;
scanf("%c",&ch);
if(ch == '#')
*T = NULL;
else{
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
void DestroyBiTree(BiTree *T)
{
if(*T)
{
if((*T)->lchild)
DestroyBiTree((*T)->lchild);
if((*T)->rchild)
DestroyBiTree((*T)->rchild);
free(*T);
*T = NULL;
}
}
int InsertLeftChild(BiTree p, BiTree c)
{
if(p){
c->rchild = p->lchild;
p->lchild = c;
return 1;
}
return 0;
}
int InsertRightChild(BiTree p,BiTree c)
{
if(p){
c->rchild = p->rchild;
p->rchild = c;
return 1;
}
return 0;
}
BiTree BiTreePoint(BiTree T,DataType e)
{
BiTree Q[MAXSIZE];
int front = 0,rear = 0;
BiNode *p;
if
{
Q[rear] = T;
rear++;
while(front != rear )
{
p = Q[front];
front++;
if(p->data = e)
return p;
if(p->lchild)
Q[rear++] = p->lchild;
if(p->rchild)
Q[rear++] = p->rchild;
}
}
return NULL;
}
DataType LeftChild(BiTree *T)
{
BiTree p;
if(T){
p = BiTreePoint(T,e);
if( p && p->lchild)
return p->lchild->data;
}
return 0;
}
DataType RightChild(BiTree *T)
{
BiTree p;
if(T){
p = BiTreePoint(T,e);
if( p && p->rchild)
return p->rchild->data;
}
return 0;
}
int DeleteLeftChild(BiTree p)
{
if(p){
DestroyBiTree(&(p->lchild));
return 1;
}
return 0;
}
int DeleteRightChild(BiTree p)
{
if(p){
DestroyBiTree(&(p-rchild));
return 1;
}
return 0;
}