xiaohuanghuang_ 2021-04-28 12:06 采纳率: 71%
浏览 33

想要非递归中序遍历一棵二叉树,这段代码为什么会出现读取的访问冲突?

//这是遍历处理的树的格式
static void load_bitre(bitre & t) {
    char s;
    scanf("%c",&s);
	t=(bitre)malloc(sizeof(bnode));
	if (s=='.'){
		t=0;
	}
	else{
		t->data=s;
		load_bitre(t->lchild);
		load_bitre(t->rchild);
	}
//这是我企图中序遍历代码
static void displayWith(bitre & root){
	bitre stack[100];//栈访问指针
	int flag=-1;//递归调用语句编号
	bitre oil=root;
	stack[++flag]=oil;
	while (flag!=-1)
	{
		while (oil){
			stack[++flag]=oil->lchild;//这后面就是先序
			oil=oil->lchild;
		}
		oil=stack[--flag];/*事实上我觉得在这加printf中序遍历逻辑上很合理,输出也确实是中序,但是会有报警,这就是我遇到的问题*/
		if(oil)
			printf("%c",oil->data);
		if(flag!=-1){
			stack[flag]=oil->rchild;//在这后面加printf就是后序
			oil=stack[flag];
			
		}	
	}
}

  • 写回答

2条回答 默认 最新

  • wlj1234 2021-04-29 11:39
    关注

    oil 为真时,不能保证oil->lchild也为真,stack中是由空指针的,调用空指针oil->data自然会出错

    while (oil)改为while (oil&&oil->lchild)

    评论

报告相同问题?

悬赏问题

  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型