二叉树遍历,根据根的输出顺序可分为:先序、中序、后序遍历。
/**
* 二叉树遍历
* @author xiaowei 2018年2月27日 下午6:11:16
*/
public class TreeRecursionTest {
public static void main(String[] args) {
/*
* 1
* 2 3
* 4 5 6 7
*/
TreeNode node = new TreeNode(1);
node.left = new TreeNode(2);
node.right = new TreeNode(3);
node.left.left = new TreeNode(4);
node.left.right = new TreeNode(5);
node.right.left = new TreeNode(6);
node.right.right = new TreeNode(7);
firstTraversal(node);
System.out.println();
midTraversal(node);
System.out.println();
lastTraversal(node);
}
/**
* 先序遍历
*/
public static void firstTraversal(TreeNode node) {
if (node == null) {
return;
}
// 打印节点
System.out.print(node.value + "、");
// 遍历左子节点
firstTraversal(node.left);
// 遍历右子节点
firstTraversal(node.right);
}
/**
* 中序遍历
*/
public static void midTraversal(TreeNode node) {
if (node == null) {
return;
}
// 遍历左子节点
midTraversal(node.left);
// 打印节点
System.out.print(node.value + "、");
// 遍历右子节点
midTraversal(node.right);
}
/**
* 后序遍历
*/
public static void lastTraversal(TreeNode node) {
if (node == null) {
return;
}
// 遍历左子节点
lastTraversal(node.left);
// 遍历右子节点
lastTraversal(node.right);
// 打印节点
System.out.print(node.value + "、");
}
}
/**
* 节点对象
* @author xiaowei 2018年2月27日 下午6:11:06
*/
class TreeNode {
public TreeNode left;
public TreeNode right;
public int value;
public TreeNode(int value) {
this.value = value;
}
}
输出结果:
1、2、4、5、3、6、7、
4、2、5、1、6、3、7、
4、5、2、6、7、3、1、