用二叉树统计叶子节点的个数时设立头节点的方式和传参的问题怎么解决


#include <stdio.h>
#include <stdlib.h>
typedef char DataType;
typedef struct Node
{
    DataType data;
    struct Node *lchild,*rchild;
} BiTreeNode,*BiTree;
void PreOrderCreate(BiTree *root)
{
    char a;
    scanf("%c",&a);
    if(a=='#')
        *root=NULL;
    else
    {
        *root=(BiTree)malloc(sizeof(BiTreeNode));
        (*root)->data=a;
        PreOrderCreate(&(*root)->lchild);
        PreOrderCreate(&(*root)->rchild);

    }
}

void Leaf(BiTree root)
{
    int flag=0;
    BiTree *p;
    p=root;
    while(p!=NULL)
    {
        Leaf((*p)->lchild);
        Leaf((*p)->rchild);
        printf("%c",(*p)->data);
        if((*p)->lchild==NULL&&(*p)->rchild==NULL)
            flag++;
    }

}

int main()
{
    BiTree root;
    PreOrderCreate(root);
    Leaf(root);
    return 0;
}

img