zcq

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