数据结构之二叉树(二):顺序存储二叉树
概念:
从数据存储来看,顺序存储二叉树就是数组储存方式和树的储存方式可以相互转换,即数组可以转化成树,树也可以转换成数组。
例如下图:
(顺序二叉树通常只考虑完全二叉树)
由上图可知,数组下标对应树节点序号。
二叉树的第n个节点的左子树的节点序号为2n+1;
二叉树的第n个节点的右子树的节点序号为2n+2;
二叉树的第n个节点的父节点的节点序号为(n-1)/2;
由数组转换为二叉树的简单实现:
public class ArrayBinaryTreeDemo {
public static void main(String[] args) {
int arr[]= {
1,2,3,4,5,6,7};
ArrayBinaryTree abTree=new ArrayBinaryTree(arr);
abTree.preShow(0);
}
}
class ArrayBinaryTree{
int arr[];
public ArrayBinaryTree(int arr[]) {
this.arr=arr;
}
//将数组转换为树后的前序遍历,index为数组下标
public void preShow(int index) {
if(arr==null||arr.length==0) {
System.out.println("数组为空,转换树失败");
}
System.out.println(arr[index]);
if((2*index+1)<arr.length) {
preShow(2*index+1);
}
if((2*index+2)<arr.length) {
preShow(2*index+2);
}
}
}
输出的前序遍历结果: