二叉树的非递归遍历

前序遍历

把栈中的每一个节点都当作是一棵完整的二叉树,每次pop出一个节点,访问,然后把右左两棵子树入栈。

中序遍历

把栈中的每一个节点当作是只有右子树的二叉树,这就需要每次入栈时处理好它的左子树,一路向左把所有的节点入栈,然后出栈,访问,然后把这个节点的右子树当作是二叉树按同样的方法处理(一路向左)

后序遍历

后序遍历的关键就在于如何判断一个节点是应该遍历它的两棵子树还是它自己,
后序遍历有这样的特点:

  1. 如果有右子树,那么它的右孩子一定正好在它之前
  2. else 如果有左子树,那么它的左孩子一定正好在它之前
  3. 如果左右子树都没有那么说明它可以直接访问

所以我们在便利过程中设置一个变量保存刚刚遍历过的节点,然后根据上面的性质就可以判断是该访问栈顶元素还是它的两棵子树了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值