- import java.util.*;
-
- public class Main {
- public static void main(String[] args) {
-
- //Integer[] arr = {3, 9, 20, null, null, 15, 7};
- Integer[] arr = {1,2,3,4,null,5,null,null,null,null,null,null,6};
- TreeNode tree = createTree(arr, 0);
- System.out.println("层次:");
- printLevelOrder(tree);
- System.out.println();
- System.out.println("前序:");
- printPreOrder(tree);
- System.out.println();
- System.out.println("中序:");
- printMidOrder(tree);
- System.out.println();
- System.out.println("后序:");
- printAfterOrder(tree);
- System.out.println();
- }
-
- /**
- * 创建一个二叉树(通过层次法)
- * Integer[] arr = {1,2,3,4,null,5,null,null,null,null,null,null,6};
- * ---------1
- * ----2 3
- * -4 5
- * -------------6
- */
-
- public static TreeNode createTree(Integer[] array, int index) {
- TreeNode root = null;
- if (index < array.length) {
- Integer value = array[index];
- if (value == null) {
- return null;
- }
- root = new TreeNode(value);
- root.left = createTree(array, 2 * index + 1);
- root.right = createTree(array, 2 * index + 2);
- }
- return root;
-
- }
-
- /**
- * 层次遍历
- */
- public static void printLevelOrder(TreeNode root) {
- Queue
queue = new ArrayDeque<>(); - queue.add(root);
- while (!queue.isEmpty()) {
- int size = queue.size();
- for(int i = 0; i < size; i++) {
- // 出队
- TreeNode node = queue.poll();
- System.out.print(node.val == null ? "" : node.val + " ");
- if (node.left != null) {
- queue.add(node.left);
- }
- if (node.right != null) {
- queue.add(node.right);
- }
- }
- System.out.println();
-
- }
- }
-
-
- /**
- * 前序遍历
- */
- public static void printPreOrder(TreeNode tree) {
- if (tree != null) {
- System.out.print(tree.val == null ? "" : tree.val + " ");
- printPreOrder(tree.left);
- printPreOrder(tree.right);
- }
- }
-
- /**
- * 中序遍历
- */
- public static void printMidOrder(TreeNode tree) {
- if (tree != null) {
- printMidOrder(tree.left);
- System.out.print(tree.val == null ? "" : tree.val + " ");
- printMidOrder(tree.right);
- }
- }
-
- /**
- * 后序遍历
- */
- public static void printAfterOrder(TreeNode tree) {
- if (tree != null) {
- printAfterOrder(tree.left);
- printAfterOrder(tree.right);
- System.out.print(tree.val == null ? "" : tree.val + " ");
- }
- }
-
- }
-
- class TreeNode {
- Integer val;
- TreeNode left;
- TreeNode right;
-
- TreeNode() {
- }
-
- TreeNode(Integer val) {
- this.val = val;
- }
-
- TreeNode(int val, TreeNode left, TreeNode right) {
- this.val = val;
- this.left = left;
- this.right = right;
- }
- }