yzlee_1991 2015-01-15 15:36 采纳率: 0%
浏览 1851

有关后序非递归遍历二叉树的问题

void show_LRD(tree LRD)
{
//后序非递归遍历二叉树
int otherstack[max];//辅助栈,用于检测出栈时是否已经遍历右子树
int *othertop,*otherbottom;
tree temp;
othertop=otherbottom=otherstack;
while(LRD||!emptystack())
{
while(LRD)
{
while(LRD)
{

inputstack(LRD);
*othertop++=0;
LRD=LRD->lchild;
}
LRD=gettopstack();
LRD=LRD->rchild;
*(othertop-1)=1;
}
while(
(othertop-1)==1)
{
popstack(&temp);
printf("%c",temp.date);
othertop--;
}
*(othertop-1)=1;
LRD=gettopstack();
LRD=LRD->rchild;
}
}
这是我写的后序非递归遍历二叉树。我用这个与后序递归遍历二叉树一起输出,结果是一样的,可是输出后程序立马就崩溃了。到底问题出在哪,实在想不明。

  • 写回答

3条回答 默认 最新

  • devmiao 2015-01-15 15:53
    关注

    使用一个堆栈记录下之前遍历的节点。

    评论

报告相同问题?

悬赏问题

  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择