#include<stdio.h>
#include<stdlib.h>
typedef struct TreeNode
{
char data;
struct TreeNode* left;
struct TreeNode* right;
}*Tree,*treeNode;
void creattree(Tree T){
char t;
scanf(" %c",&t);
if(t=='#'){
T=NULL;
}
else {
T=(struct TreeNode*)malloc(sizeof(struct TreeNode));
T->data=t;
printf("请输入%c的左孩子:",t);
creattree(T->left);
printf("请输入%c的右孩子:",t);
creattree(T->right);
}
}
void PreOrderTraverse(Tree T){
if(T!=NULL){
printf("%c ",T->data);
PreOrderTraverse(T->left);
PreOrderTraverse(T->right);
}
}
int main(){
struct TreeNode* A=(struct TreeNode*)malloc(sizeof(struct TreeNode));
creattree(A);
PreOrderTraverse(A);
}
写到这里测试发现创建树的代码能够正常运行,但是遍历的时候就出问题,输出了一个‘?’.我:“???”。我也不知道是什么问题,折腾一番后,手动创建一个简单的二叉树,将主函数改为如下:
int main(){
treeNode P=NULL;
treeNode Q=NULL;
treeNode M=NULL;
P=(treeNode)malloc(sizeof(treeNode*)