二叉树遍历算法之三:后序遍历

本文详细介绍了二叉树的后序遍历算法,包括递归和非递归实现方式。通过实例解析了非递归实现的执行过程,帮助理解后序遍历的逻辑。
摘要由CSDN通过智能技术生成

后续遍历的递归实现

后续遍历指的是先访问节点的左右孩子,最后访问节点本身。所以使用后序遍历得到的结果的最后一个节点就是根节点。采用后续遍历的具体步骤如下:

  1. 先访问根节点,如果有左孩子,进入第二步;如果有右孩子,进入第三步
  2. 对左孩子继续判断其是否有左孩子,直到某节点的左孩子为空,设为cur节点
  3. 对右孩子继续判其是否有左孩子,直到某个节点的左孩子为空,设为curR节点
  4. cur节点访问之后,访问其双亲节点的右孩子,如果其双亲节点的右孩子不为空的话。接着访问cur节点的双亲节点,设为curP节点。
  5. cur节点的双亲节点访问结束之后,继续访问curP节点的右孩子(如果不为空的话),接着访问curP节点本身
  6. 重复以上过程直到根节点
  7. 继续访问根节点的右孩子,回到第三步,访问curR节点之后,访问其双亲节点的右孩子(如果有的话)
  8. 最后访问curR的双亲节点本身
  9. 重复以上过程直到访问根节点,访问结束

    比如下面的二叉树后序遍历的访问结果是:24,15,5,7,6,30,9,28,11,10,8

二叉树

那么使用递归实现的代码如下:

public void postOrderTraverse(TreeNode node){
        if(node == null) return;
        postOrderTraverse(node.left);
        postOrderTraverse(node.right);
        System.out.print(node.val + " ");
    }

后续遍历的非递归实现

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值