public class ArrBinaryTree { private int[] arr; public ArrBinaryTree(int[] arr) { this.arr = arr; } public void preOrder() { preOrder(0); } /** * 顺序存储二叉树的前序遍历 * * @param index */ public void preOrder(int index) { // 如果输入为空 if (arr == null && arr.length == 0) { System.out.println("数组为空,不能按照二叉树的前序遍历"); } System.out.println(arr[index]); // 向左递归遍历 if ((index * 2 + 1) < arr.length) { preOrder(index * 2 + 1); } // 向右递归遍历 if ((index * 2 + 2) < arr.length) { preOrder(index * 2 + 2); } } /** * 顺序存储二叉树的中序遍历 * * @param index */ public void infixOrder(int index) { // 如果输入为空 if (arr == null && arr.length == 0) { System.out.println("数组为空,不能按照二叉树的前序遍历"); } // 向左递归遍历 if ((index * 2 + 1) < arr.length) { preOrder(index * 2 + 1); } System.out.println(arr[index]); // 向右递归遍历 if ((index * 2 + 2) < arr.length) { preOrder(index * 2 + 2); } } /** * 顺序存储二叉树的后序遍历 * * @param index */ public void postOrder(int index) { // 如果输入为空 if (arr == null && arr.length == 0) { System.out.println("数组为空,不能按照二叉树的前序遍历"); } // 向左递归遍历 if ((index * 2 + 1) < arr.length) { preOrder(index * 2 + 1); } // 向右递归遍历 if ((index * 2 + 2) < arr.length) { preOrder(index * 2 + 2); } System.out.println(arr[index]); } }
测试
public class ArrBinaryTreeDemo { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; ArrBinaryTree tree = new ArrBinaryTree(arr); tree.preOrder(); } }
1 2 4 5 3 6 7