二叉树的建立问题,帮忙看看。
为什么程序【1】就运行不了,程序【2】运行得了 区别就在create()函数的参数,二叉树的建立,
谁给我讲讲,帮忙
程序【1】
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct B
{char data;
struct B*lchild;
struct B*rchild;
}node,*pnode;
void create(node*p)
{char ch;
scanf("%c",&ch);
getchar();
if(ch=='0')
return;
p=(pnode)malloc(sizeof(node));
p->data=ch;
p->lchild=NULL;
p->rchild=NULL;
create(p->lchild);
create(p->rchild);
return;
}
void visit(char num)
{printf("%c",num);
}
void pre(node*t)
{if(t)
{
pre(t->lchild);
visit(t->data);
pre(t->rchild);
return;
}
else
return;
}
void main()
{node*p;
create (p);
pre(p);
}
程序【2】
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct B
{char data;
struct B*lchild;
struct B*rchild;
}node,*pnode;
void create(node**p)
{char ch;
scanf("%c",&ch);
getchar();
if(ch=='0')
return;
*p=(pnode)malloc(sizeof(node));
(*p)->data=ch;
(*p)->lchild=NULL;
(*p)->rchild=NULL;
create(&(*p)->lchild);
create(&(*p)->rchild);
return;
}
void visit(char num)
{printf("%c",num);
}
void pre(node*t)
{if(t)
{
pre(t->lchild);
visit(t->data);
pre(t->rchild);
return;
}
else
return;
}
void main()
{node*p;
create (&p);
pre(p);
}