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