1. package com.atguigu.tree;
    2. /**
    3. * 顺序存储二叉树
    4. *
    5. * @author Dxkstart
    6. * @create 2021-10-17-18:29
    7. */
    8. public class ArrBinaryTreeDemo {
    9. public static void main(String[] args) {
    10. int[] arr = {1, 2, 3, 4, 5, 6, 7};
    11. //创建一个ArrayBinaryTree
    12. ArrayBinaryTree arrayBinaryTree = new ArrayBinaryTree(arr);
    13. arrayBinaryTree.preOrder();//1245367
    14. }
    15. }
    16. //编写一个ArrayBinaryTree,实现顺序存储二叉树遍历
    17. class ArrayBinaryTree {
    18. private int[] arr;//存储数据节点的数组
    19. public ArrayBinaryTree(int[] arr) {
    20. this.arr = arr;
    21. }
    22. //重载preOrder
    23. public void preOrder() {
    24. this.preOrder(0);
    25. }
    26. //编写一个方法,完成顺序储存二叉树的前序遍历
    27. /**
    28. * @param index 数组的下标
    29. */
    30. public void preOrder(int index) {
    31. //如果数组为空,或者arr.length = 0
    32. if (arr == null || arr.length == 0) {
    33. System.out.println("数组为空,不能按照二叉树的前序遍历");
    34. }
    35. //输出当前这个元素
    36. System.out.println(arr[index]);
    37. //向左递归遍历
    38. if ((index * 2 + 1) < arr.length) {
    39. preOrder(2 * index + 1);
    40. }
    41. //向右递归遍历
    42. if ((index * 2 + 2) < arr.length) {
    43. preOrder(2 * index + 2);
    44. }
    45. }
    46. }