顺序存储二叉树概念
基本说明:从数组储存来看,数组存储方式和树的存储方式可以转换,即树可以转换成数组,数组也可以转换为树
顺序储存二叉树的特点
1.顺序存储二叉树通常只考虑完全二叉树
2.第n个元素的左子节点为2n+1
3.第n个元素的右子节点为2n+2
4.第n个元素的父结点为(n-1)/2
5.n:表示二叉树中的第几个元素
代码实现(以前序遍历的方式)
注:不懂前序遍历的小朋友请移步我的另一篇文章:Java-二叉树详解
//编写一个ArrayBinaryTree,实现顺序存储二叉树遍历
class ArrayBinaryTree{
private int[] arr;//存储数据节点的数组
public ArrayBinaryTree(int[] arr) {
super();
this.arr = arr;
}
//编写一个方法,完成顺序存储二叉树的遍历
//index数组的下标
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 static void main(String[] args) {
int[]arr= {1,2,3,4,5,6,7};
//创建一个ArrayBinaryTree
ArrayBinaryTree arrBinaryTree=new ArrayBinaryTree(arr);
arrBinaryTree.preOrder(0);//1,2,4,5,3,6,7
}