关于二叉树的一个小问题

ck2333 2016-12-06 06:20:46
#include <stdio.h>
#include <stdlib.h>

typedef struct node {
int data;
struct node *lchild,*rchild;
}BItree,*BtNode; //二叉树结点

typedef struct{
BtNode a[100];
int front,rear;
}Queue;//队列

void creatree(BtNode tree) //递归先序建立二叉树
{
char c;
c=getchar();
if(c=='#')
tree=NULL;
else {
tree=(BtNode)malloc(sizeof(BItree));
tree->data=c-'0';
creatree(tree->lchild);
creatree(tree->rchild);
}
}
void levelpush(BtNode root) //按层输出
{
Queue q;
BtNode p;
q.front=0;
q.rear=0;
q.a[q.rear++]=root;
while(q.front!=q.rear)
{
p=q.a[q.front++];
printf("%3d",p->data);
if(p->lchild)
q.a[q.rear++]=p->lchild;
if(p->rchild)
q.a[q.rear++]=p->rchild;
}
}
int main ()
{
BtNode root;
creatree(root);
printf("按层输出:\n");
levelpush(root);
return 0;
}

这个程序问题出在什么位置??
...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2016-12-06
  • 打赏
  • 举报
回复
void creatree(BtNode tree) 这个函数你是按值传递的,所以你在函数中将申请到的内存只是赋值给了一个复制的对象,并不是你主函数中的root 解决问题你应该传递的是root的地址
ck2333 2016-12-06
  • 打赏
  • 举报
回复
引用 1 楼 sdghchj 的回复:
我能帮你的是那个位置为什么会出问题,帮不了你哪个位置出了什么样的问题
也行。。都一样的。。
sdghchj 2016-12-06
  • 打赏
  • 举报
回复
我能帮你的是那个位置为什么会出问题,帮不了你哪个位置出了什么样的问题

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧