数组存储二叉树遍历
概念
从数据结构来看,数组存储方式和树的存储方式可以相互转换,数组可以转换成树,树也可以转换成数组
分析
树的左子节点为 父节点坐标X2+1
树的右子节点为 父节点坐标X2+2
父节点坐标为(当前节点-1)/2
问题
用代码实现数组以树的方式进行前序遍历
/**
* 数组存储顺序二叉树(把数组用树前序遍历方式输出)
*
* 1.树的左子节点为 父节点坐标*2+1
* 2.树的右子节点为 父节点坐标*2+2
* 3. 父节点坐标 = (当前节点-1)/2
* */
public class ArrayOrderTree {
int [] arr;
public ArrayOrderTree(int [] arr){
this.arr = arr;
}
/**
* 前序遍历
* */
public void pre(int index){
if(arr==null||arr.length==0){
return;
}
//输出根节点
System.out.println(arr[index]);
//递归遍历左节点
if(index*2+1<arr.length){
pre(index*2+1);
}
//递归遍历右节点
if(index*2+2<arr.length){
pre(index*2+2);
}
}
/**
* 重载一下
* */
public void pre(){
pre(0);
}
测试
public static void main(String[] args) {
int [] a = new int[]{1,2,3,4,5,6,7,8,9,10};
ArrayOrderTree arrayOrderTree = new ArrayOrderTree(a);
arrayOrderTree.pre();
}