大神求助 二叉树问题
程序代码:#include <stdio.h>
#include <stdlib.h>
typedef char ElemType ;
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode;
//创建一颗二叉树
creatBiTree( BiTNode *T){
char c;
scanf("%c",&c);
if(' '==c)
{
T = NULL;
}
else
{
T = (BiTNode*) malloc (sizeof(BiTNode));
T->data = c ;
creatBiTree(T->lchild);
creatBiTree(T->rchild);
}
}
//遍历任务
visit(char c ,int level)
{
printf("%c is %d 2ã\n",c,level);
}
//遍历二叉树
preordertraverse(BiTNode *T,int level)
{
if(T)
{
visit(T->data,level);
preordertraverse( T->lchild, level+1);
preordertraverse( T->rchild, level+1);
}
}
int main(void)
{
int level = 1;
BiTNode * T = NULL;
creatBiTree(T);
preordertraverse( T, level);
return 0;
}我将书上二叉树代码的二级指针替换为一级指针,但出现问题,我发现无法打印,希望有大神帮我看下,怎么回事
谢谢
书上代码如下
程序代码:#include <stdio.h>
#include <stdlib.h>
typedef char ElemType ;
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//创建一颗二叉树
creatBiTree(BiTree *T){
char c;
scanf("%c",&c);
if(' '==c)
{
*T = NULL;
}
else
{
*T = (BiTNode*) malloc (sizeof(BiTNode));
(*T)->data = c ;
creatBiTree(&(*T)->lchild);
creatBiTree(&(*T)->rchild);
}
}
//遍历二叉树
preordertraverse(BiTree T,int level)
{
if(T)
{
visit(T->data,level);
preordertraverse( T->lchild, level+1);
preordertraverse( T->rchild, level+1);
}
}
//遍历任务
visit(char c ,int level)
{
printf("%c is %d 层\n",c,level);
}
int main(void)
{
int level = 1;
BiTree T = NULL;
creatBiTree(&T);
preordertraverse( T, level);
return 0;
}









