遍历:按照一定的顺序访问(可以是打印节点值,可以是计算节点个数)这个集合中的所有元素做到不重漏。
二叉树的三种遍历实现的代码:
package datastructure.bin_tree;
public class MyBinTree {
private static class TreeNode<E> {
E val;
TreeNode left;
TreeNode right;
public TreeNode(E val) {
this.val = val;
}
}
//创建一个二叉树返回根节点
public static TreeNode build() {
TreeNode nodeA = new TreeNode('A');
TreeNode nodeB = new TreeNode('B');
TreeNode nodeC = new TreeNode('C');
TreeNode nodeD = new TreeNode('D');
TreeNode nodeE = new TreeNode('E');
TreeNode nodeF = new TreeNode('F');
TreeNode nodeG=new TreeNode('G');
nodeA.left=nodeB;
nodeA.right=nodeC;
nodeB.left=nodeD;
nodeB.right=nodeE;
nodeC.left=nodeF;
nodeC.right=nodeG;
return nodeA;
}
//二叉树的先序遍历
//根左右
public static void preOrder(TreeNode root){
if(root==null){
return;
}
System.out.print(root.val+" ");
preOrder(root.left);
preOrder(root.right);
}
public static void inOrder(TreeNode root){
if (root==null){
return;
}
inOrder(root.left);
System.out.print(root.val+" ");
inOrder(root.right);
}
public static void postOrder(TreeNode root){
if (root==null){
return;
}
postOrder(root.left);
postOrder(root.right);
System.out.print(root.val+" ");
}
public static void main(String[] args) {
TreeNode root=build();
System.out.print("先序遍历的结果:");
preOrder(root);
System.out.println();
System.out.print("中序遍历的结果是:");
inOrder(root);
System.out.println();
System.out.print("后序遍历的结果是:");
postOrder(root);
}
}
最终的运行结果: