c语言二叉树后序遍历非递归算法问题

yubo_725 2015-11-20 09:50:49
我的二叉树结构体这么定义的:


然后非递归的算法这么写的:

但是代码执行时进入130行的死循环了

第134行设置了true之后,在IsChildsAllPrintOut()函数里获取的节点的isPrintOut变量值,依然是false

我试验了一下,从Stack里Push进去的和Pop出来的指针地址不一样,为什么会这样?
...全文
274 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yubo_725 2015-11-21
  • 打赏
  • 举报
回复
引用 1 楼 anzi5091104 的回复:
第120行isemptystack在为空时返回1还是0

代码是这样的:

跟这个地方应该没关系,主要是设置某个节点的isPrintOut为true之后,再获取的isPrintOut还是false
anzi5091104 2015-11-21
  • 打赏
  • 举报
回复
第120行isemptystack在为空时返回1还是0
yu.sang 2015-11-21
  • 打赏
  • 举报
回复

//感觉逻辑应该是这样的
else
{
	p = GetTop(stack);
	if(IsChildsAllPrintOut(p))
	{
		printf("%c",p->val);
		p->isPrintOut = true;
		Pop(statck);	
		p = NULL;
	}
	else p = p->right;
}
yubo_725 2015-11-21
  • 打赏
  • 举报
回复
栈定义得有问题,算法也写得不对

69,336

社区成员

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

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