二叉树遍历(先序、中序、后序、深度、广度)递归和非递归实现

本文详细介绍了二叉树的四种遍历方式——前序、中序、后序和层次遍历,分别通过递归和非递归的方法进行实现。在递归实现中,深度遍历思路清晰,而广度遍历需要借助栈。非递归实现时,层次遍历使用队列,其他三种遍历利用栈辅助,确保节点的访问顺序正确。
摘要由CSDN通过智能技术生成
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。二叉树的遍历方式分为深度遍历和广度遍历,深度遍历包括前序、中序以及后序三种遍历方法,广度遍历即我们平常所说的层次遍历。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的深度遍历不仅容易理解而且代码很简洁,而对于广度遍历来说,需要其他数据结构的支撑,比如堆了。所以,对于一段代码来说,可读性有时候要比代码本身的效率要重要的多。
四种主要的遍历思想为:
前序遍历:根结点 ---> 左子树 ---> 右子树
中序遍历:左子树---> 根结点 ---> 右子树
后序遍历:左子树 ---> 右子树 ---> 根结点
层次遍历:只需按层次遍历即可
一、前序遍历
1)递归实现很简单,思路:访问根节点-前序遍历左子树-前序遍历右子树。
停止条件是当前树不为空树,代码:
public void preOrder(TreeNode root, ArrayList<Integer> out){
    if(root!=null) {
        out.add(root.val);
        preOrder(root.left, out);
        preOrder(root.right, out);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值