顺序存储二叉树
思路
- 先了解顺序存储二叉树的特点
- 顺序二叉树的实现用完全二叉树的特性
- 第n个元素的左子结点为2n+1
- 第n个元素的右子结点为2n+2
- 第n个元素的父结点为(n+1)/2
- n代表二叉树的第几个元素,从0开始(和数组一样)
- (index * 2 + 1) < arr.length 表示为左部分
- (index * 2 + 2) < arr.length表示为右部分
代码
class ArrBinaryTree {
private int[] arr;
public ArrBinaryTree(int[] arr) {
this.arr = arr;
}
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);
}
}
}