导读:
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+" ");
}
}