写创建二叉树遇到一些问题,有人解答吗
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode{
char data;
struct BiTNode *rchild,*lchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree *t){
char ch;
printf("2\n");//为了检查运行过程
scanf("%c",&ch);
printf("3\n");//为了检查运行过程
if(ch!='#'){
*t = (BiTNode*)malloc(sizeof(BiTNode));
if(*t == NULL){
exit(-1);
}
(*t)->data = ch;
printf("1\n");//为了检查运行过程
CreateBiTree(&((*t)->lchild));
CreateBiTree(&((*t)->rchild));
}
else{
*t = NULL;
printf("0\n");//为了检查运行过程
}
}
int main(void){
BiTree t;
CreateBiTree(&t); //abc00de0g00f000
printf("\n");
system("pause");
return 0;
}
CreateBiTree(&t);这个运行的时候输入一个字符它总是会运行两遍
例如输入一个a:
在输入之前2打印了出来,然后输入a,这里没问题,输入a后运行按理说应该在递归到2的时候输入,可是它运行了两遍才停。困住我好久了,希望被指点一下。