栈方式实现二叉树的遍历

递归方式就是函数自身调用自身,当递归每次调用自身时,可以看作是入栈的过程,当递归条件满足后,结束时递归再一级一级的返回,返回过程可以看作是出栈的过程。递归和栈的实现过程可以看出都是符合“先进后出,后入先出”的原则,所以递归方式其实可以转化为栈的方式来实现。

对于二叉树的遍历,先序、中序、后序遍历都可以用到递归方法实现,既然递归可以转化为栈,那么如何把对二叉树的遍历也改为用栈的思想来实现?

对于下面这个例子,我们用栈思想做中序遍历时,过程是这样的:一开始进入,遇到A结点,因为中序遍历的顺序,要把A结点的左子树都遍历完后,才把A输出。所以遇到A后,就把A结点入栈,接下来往左走,遇到子树B,同样看B的左子树,B结点的左子树存在,所以还不可以输出B,就把B入栈。再往左边走,遇到DD也先放入栈里面,接着看D的左子树,不存在,这时候就要返回了。把D输出,也就是出栈操作,把D Pop

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值