50分, 求用栈实现 的非递归版本的后序遍历解决方法
50分, 求用栈实现 的非递归版本的后序遍历
问题1: 求通俗易懂的代码, 网上很多,但是大多没有注释
问题2:
大致思路如下:
cur保存当前栈顶的指针,左子树进入栈后,遍历完毕,那么就退栈获取跟(即:把cur保存栈顶元素指针即可),
然后把cur指向其尤子书,把每次循环的时候,不分左,右,当做一个根处理(进栈) ,右子树遍历完毕,然后
退出栈顶,然后获取跟,获取后才visit.
好多人说,要设置个标志,
什么原因啊?
不设置会怎么样啊
问题3: 对于前序、 中序而言, 左子树一直往左走,停止后,则弹出栈,是可以检测的。或者说是可以得知左子树已经遍历完毕。
那么对于 后序的 右子树呢? 如何得知其遍历完毕。 判断依据是什么
本人很菜,诚心 求解这几个问题
------解决方案--------------------
问题2你如何确定你的两棵子树都已经遍历完成了么??
看下我的博客:http://blog.****.net/w170532934/article/details/7089656
虽然是C++代码,但是不会太难的。里面有一个不需要设置标志的方法。
------解决方案--------------------
这里有代码的,楼主可以参考一下的。。
http://blog.****.net/hackbuteer1/article/details/6583988
问题1: 求通俗易懂的代码, 网上很多,但是大多没有注释
问题2:
大致思路如下:
cur保存当前栈顶的指针,左子树进入栈后,遍历完毕,那么就退栈获取跟(即:把cur保存栈顶元素指针即可),
然后把cur指向其尤子书,把每次循环的时候,不分左,右,当做一个根处理(进栈) ,右子树遍历完毕,然后
退出栈顶,然后获取跟,获取后才visit.
好多人说,要设置个标志,
什么原因啊?
不设置会怎么样啊
问题3: 对于前序、 中序而言, 左子树一直往左走,停止后,则弹出栈,是可以检测的。或者说是可以得知左子树已经遍历完毕。
那么对于 后序的 右子树呢? 如何得知其遍历完毕。 判断依据是什么
本人很菜,诚心 求解这几个问题
------解决方案--------------------
问题2你如何确定你的两棵子树都已经遍历完成了么??
看下我的博客:http://blog.****.net/w170532934/article/details/7089656
虽然是C++代码,但是不会太难的。里面有一个不需要设置标志的方法。
------解决方案--------------------
这里有代码的,楼主可以参考一下的。。
http://blog.****.net/hackbuteer1/article/details/6583988