【数据结构与算法】二叉树的遍历(递归遍历、非递归遍历、层序遍历)

导读:
1. 二叉树递归遍历
2. 二叉树非递归遍历
3. 层次遍历

  二叉树是一种非常重要的数据结构,很多其他数据结构都是基于二叉树的基础演变过来的。二叉树的遍历有前序、中序、后序三种,由于数的本身就是就是递归定义的,因此可以采用递归方法遍历但其开销也较大。若采用非递归实现遍历,则需要采用栈实现,递归本身也是用栈实现的。而二叉树的层序遍历是按照每一层进行遍历,很明显需要用队列来辅助实现。下面先介绍二叉树的三种递归遍历,然后再介绍三种非递归遍历,最后介绍层序遍历。

二叉树的定义如下:

public class BTNode {
    public int data;
    public BTNode left   = null;    //左孩子节点
    public BTNode right  = null;    //右孩子节点

    public BTNode() { }

    public BTNode(int data) {
        this.data = data;
    }
}
一、二叉树前序、中序、后序的递归实现

1、前序遍历:根节点—左孩子—右孩子

    /*
     * 前序递归遍历二叉树
     */
    public static void preOrder(BTNode tree) {
        if (tree != null) {
            System.out.print(tree.data + " ");
            preOrder(tree.left);
            preOrder(tree.right);
        }
    }

2、中序遍历:左孩子—根节点—右孩子

    /*
     * 中序递归遍历
     */
    public static void inOrder(BTNode tree) {
        if(tree != null) {
            inOrder(tree.left);
            System.out.print(tree.data+" ");
            inOrder(tree.right);
        }
    }

3、后序遍历:左孩子—根节点—右孩子

    /*
     * 后序递归遍历
     */
    public static void postOrder(BTNode tree) {
        if(tree != null) {
            postOrder(tree.left);
            postOrder(tree.right);
            System.out.print(tree.data+" ");
        }
    }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值