#include <stdio.h> #include <string.h> #include <malloc.h> typedef char ElemType; //定义二叉树结构 typedef struct THREAD{ ElemType data; //数据域 struct THREAD *lchild,*rchild; //左右孩子指针 }Thread,*ThreadPoint; int flag=0; //左孩子和右孩子全靠它了~ //层次遍历构造二叉树 void createBinaryTree(ThreadPoint tp,char *branch){ ThreadPoint next; next=(ThreadPoint)malloc(sizeof(ThreadPoint)); tp->data=*branch; //赋值 if(flag==0){ //生产左树 tp->lchild=next; //左孩子指向新结点 createBinaryTree(tp->lchild,branch+1); //构造新结点 flag=1; }else if(flag==1){ //生产右树 tp->rchild=next; createBinaryTree(tp->rchild,branch+1); flag=0; } } void main(){ char * branch; ThreadPoint tp; tp=(ThreadPoint)malloc(sizeof(ThreadPoint)); //姑且把它作为第一个结点 scanf("%s",branch); //一次性输入 createBinaryTree(tp,&branch); //开始构造 }
解决方案
10
char * branch;
scanf(“%s”,branch); //一次性输入
这个指针都没有初始化, 使用当然出问题
你的编译器都不提醒你吗?
scanf(“%s”,branch); //一次性输入
这个指针都没有初始化, 使用当然出问题
你的编译器都不提醒你吗?
80
1.你main函数调用createBinaryTree的时候,传的是&branch,也就是char **类型的,而函数声明是char *
2.createBinaryTree函数里字符串赋值用strcpy,而不是直接用=
2.createBinaryTree函数里字符串赋值用strcpy,而不是直接用=