public class TreeNode {
int data;
TreeNode leftChild;
TreeNode rightChild;
TreeNode(int data){
this.data = data;
}
}
对下面这棵树进行遍历
// 5
// / \
// 3 6
// / \ \
// 2 4 8
前序遍历 (结果:5-3-2-4-6-8)
//二叉树遍历-前序遍历
public void preTraverse(TreeNode root){
if (root!=null){
return;
}
System.out.println(root.data);
preTraverse(root.leftChild);
preTraverse(root.rightChild);
}
中序遍历 (结果:2-3-4-5-6-8 中序遍历是顺序结果)
//二叉树遍历-中序遍历
public void inTraverse(TreeNode root){
if (root!=null){
return;
}
inTraverse(root.leftChild);
System.out.println(root.data);
inTraverse(root.rightChild);
}
后序遍历 (结果:2-4-3-8-6-5)
//二叉树遍历-后序遍历
public void afterTraverse(TreeNode root){
if (root!=null){
return;
}
afterTraverse(root.leftChild);
afterTraverse(root.rightChild);
System.out.println(root.data);
}
tips:其实不难看出来:区分前中后序遍历,就是看什么时候操作元素。同时不同的遍历方式,最后遍历得到的元素顺序也不一样。