顺序存储的二叉树即逻辑结构是二叉树,存储结构不同于前面的链式存储而是顺序存储的二叉树。
顺序存储的二叉树为了保证存储连续,通常只考虑完全二叉树。
逻辑结构:
存储结构:
顺序存储的二叉树的性质:
1.第n个元素的左子结点的下标是2*n+1;
比如:权为3的结点,其左子结点的下标是2*2+1=5;
2.第n个元素的右子结点的下标是2*n+2;
比如:权为3的结点,其右子结点的下标是2*2+2=6;
3.第n个元素的父结点的下标是(n-1)/2;
比如:权为3的结点,其父结点的下标是(2-1)/2=0;
顺序存储的二叉树的遍历
//创建一棵顺序存储的二叉树
class ArrayBinaryTree{
//各结点的权
int []data;
//构造方法
public ArrayBinaryTree(int[]data){
this.data=data;
}
//重载方法
public void frontShow() {
frontShow(0);
}
//顺序存储的二叉树的前序遍历
public void frontShow(int index){
if(data==null || data.length==0)
return;
//先遍历当前结点的内容
System.out.print(data[index]);
//2*index+1:处理左子树
if(2*index+1<data.length){
frontShow(2*index+1);
}
//2*index+2:处理右子树
if(2*index+2<data.length){
frontShow(2*index+2);
}
}
}
//测试类
public class TestArrayBinaryTree{
public static void main(String[] args) {
int[]data=new int[]{1,2,3,4,5,6,7};
ArrayBinaryTree tree=new ArrayBinaryTree(data);
//前序遍历
//输出:1245367
tree.frontShow();
}
}