数据结构–数组存储二叉树(Java)
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!
顺序存储二叉树的特点
- 顺序二叉树通常只考虑完全二叉树
- 第n个元素的左子节点为 2 * n + 1
- 第n个元素的右子节点为 2 * n + 2
- 第n个元素的父节点为 (n-1) / 2
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| package cn.guizimo.tree;
public class ArrTree { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; ArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr); arrBinaryTree.preOrder(); } }
class ArrBinaryTree { private int[] arr;
public ArrBinaryTree(int[] arr) { this.arr = arr; } public void preOrder(){ this.preOrder(0); } 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(2 * index + 1); } if ((index * 2 + 2) < arr.length) { preOrder(2 * index + 2); } }
public void preOrder(int index) { if (arr == null || arr.length == 0) { System.out.println("数组为空"); } if ((index * 2 + 1) < arr.length) { preOrder(2 * index + 1); } System.out.println(arr[index]); if ((index * 2 + 2) < arr.length) { preOrder(2 * index + 2); } } public void preOrder(int index) { if (arr == null || arr.length == 0) { System.out.println("数组为空"); } if ((index * 2 + 1) < arr.length) { preOrder(2 * index + 1); } if ((index * 2 + 2) < arr.length) { preOrder(2 * index + 2); } System.out.println(arr[index]);
} }
|
感谢
尚硅谷
万能的网络
以及勤劳的自己