二叉树的三种遍历的递归写法和非递归写法

二叉树的前序遍历、中序遍历、后续遍历的递归方法代码较少,思路就是方法的压栈出栈过程。

 

它的非递归写法其实就是使用了递归遍历的思想,采用栈的结构,也就是说非递归写法写的是递归写法函数调用入栈出栈的过程。

 

前序遍历:节点输出并入栈,无左节点出栈,出栈不输出,如果有右节点则继续入栈,否则继续出栈,直到栈为空。

中序遍历:节点入栈,无左节点出栈,出栈输出,如果有右节点则继续入栈,不输出,循环该过程,直到栈为空。

后续遍历:左右节点都为空时,才输出。入栈时需要有个辅助类数组记录栈内每个节点左右节点遍历次数count,count初始为0,相当于每个节点左右为空时输出,每个节点输出,其栈顶节点相应+1,表示该节点已经遍历过左节点了,当count=2时,输出该栈元素,相应的新的栈顶继续加1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值