# include<stdio.h>
# include<stdlib.h>
# include<malloc.h>
# define Max_Size 2
typedef struct Node{
int data;
struct Node *Lchild;
struct Node *Rchild;
}BiTNode,*BiTree;
int x,k=0,n=0;
void CreateBiTree(BiTree T)//L是节点
{
while(k!=Max_Size)
{
scanf("%d",&x);++k;//注意写法
if(!(T=(BiTree)malloc(sizeof(BiTree)))) exit(0);//已满,不能分配
else
{
T->data=x;
CreateBiTree(T->Lchild);
CreateBiTree(T->Rchild);
}
}
}
void Visit(BiTree T)
{
printf("%d,",x);
}
void PreOrder(BiTree T)
{
if(NULL!=T)
{
printf("%d ",T->data);
PreOrder(T->Lchild);
PreOrder(T->Rchild);
}
}
/*int PreOrder(BiTree T.int (* Visit)(int e))
{
int Print(int e)
{
printf("%d,",e);
return 1;
}//是否打印
if(T){
if(Visit(T->data))
if(PreOrder(T->Lchild.visit))
if(PreOrder(T->Lchild.visit)) return 1;
return 0;
}
else return 1;
}*/
void Leaf(BiTree T)
{
if(T!=NULL)
{
Leaf(T->Lchild);
Leaf(T->Rchild);
if((T->Lchild==NULL)&&(T->Rchild==NULL))
n++;
}
printf("the leafnumber is:%d",n);
}
BiTree Transform(BiTree T)
{
BiTree Temp;
if(T!=NULL)
{
Transform(T->Lchild);
Transform(T->Rchild);
Temp=T->Lchild;
T->Lchild=T->Rchild;
T->Rchild=Temp;
}
return T;
}
int main(BiTree T)
{
CreateBiTree(T);
PreOrder(T);
Transform(T);
Leaf(T);
getch();
}