顺序结构基本说明
从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可
以转换成树,树也可以转换成数组。
顺序存储二叉树的特点:
顺序二叉树通常只考虑完全二叉树
第n个元素的左子节点为 2 * n + 1
第n个元素的右子节点为 2 * n + 2
第n个元素的父节点为 (n-1) / 2
n : 表示二叉树中的第几个元素(按0开始编号如图所示) 相当于数组的下标
上代码
他的实现
package arrayTree;
/**
* 顺序存储二叉树
*/
public class ArrayBinaryTree {
int[] arr;
public ArrayBinaryTree(int[] arr){
this.arr = arr;
}
/**
* 前序遍历
*/
public void previousOrder(){
previousOrder(0);
}
/**
* 以index为根节点前序遍历
* 直接利用规律遍历就行了
*/
/**
* 前序遍历数组
* @param index
*/
private void previousOrder(int index){
if(arr.length == 0){
System.out.println("数组为空");
}
System.out.println(arr[index]);
if(index * 2 + 1 < arr.length)
previousOrder(index * 2 + 1);
if(index * 2 + 2 < arr.length){
previousOrder(index * 2 + 2);
}
}
}
测试
package arrayTree;
public class Demo {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
ArrayBinaryTree tree = new ArrayBinaryTree(arr);
tree.previousOrder();
}
}
结果
输出
1
2
4
5
3