非递归中序遍历二叉树总结(2种方法)

本文介绍了非递归中序遍历二叉树的两种方法,包括基于栈的方法和Morris方法。通过理解中序遍历的特性,即第二次遇到节点时遍历,作者提供了相应的代码实现,并指出两种方法的相似性。同时,提到Morris方法能降低空间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法 非递归中序遍历二叉树总结(2种方法)

@author:Jingdai
@date:2020.12.03

传送门

方法1

先序遍历是第一次遇到该节点遍历;中序是第二次遇到该节点遍历;而后序是第三次遇到该节点遍历。非递归用栈进行遍历,第一次遇到就是压栈时,第二次是弹栈时,所以中序遍历应该弹栈的时候进行遍历。弹栈后代表弹栈节点及其左子树已经遍历完了,所以此时将弹栈节点的右子节点压栈,对其右子树进行同样的操作。代码如下。

public static void inOrderTraverse(TreeNode root) {
   

    TreeNode p = root;
    LinkedList<TreeNode> stack = new LinkedList<>();

    while 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值