typedef struct BiTNode{
int data;
struct BiTNode * lchild,* rchild;
}BiTNode,* BiTree;
void initTree(BiTree tree) { //先序遍历创建二叉树
int e;
scanf("%d",&e);
if(e>0){ //输入小于等于0的数表示为空
tree=(BiTree)malloc(sizeof(BiTNode));
tree->data=e;
initTree(tree->lchild);
initTree(tree->rchild);
}
else tree=NULL;
}
void LDR(BiTree tree){ //中序遍历
if(tree){
LDR(tree->lchild);
printf("%4d ",tree->data);
LDR(tree->rchild);
}
}
main(){
BiTree tree=NULL;
initTree(tree);
LDR(tree);
}
输入6 3 0 4 0 0 1 7 0 0 0 最后运行没有输出
修改处见注释,供参考:
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode {
int data;
struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
//void initTree(BiTree tree) //修改
void initTree(BiTree* tree) { //先序遍历创建二叉树
int e;
scanf("%d", &e);
if (e > 0) { //输入小于等于0的数表示为空
(*tree) = (BiTree)malloc(sizeof(BiTNode));
//tree=(BiTree)malloc(sizeof(BiTNode)); 修改
(*tree)->data = e;
//tree->data=e; 修改
initTree(&(*tree)->lchild);
//initTree(tree->lchild); 修改
initTree(&(*tree)->rchild);
//initTree(tree->rchild); 修改
}
else (*tree) = NULL;
//else tree=NULL; 修改
}
void LDR(BiTree tree) { //中序遍历
if (tree) {
LDR(tree->lchild);
printf("%4d ", tree->data);
LDR(tree->rchild);
}
}
int main() {
BiTree tree = NULL;
initTree(&tree); //initTree(tree); 修改
LDR(tree);
return 0;
}