从零单刷数据结构(Java描述)(二十五)——顺序存储的二叉树

顺序存储的二叉树即逻辑结构是二叉树,存储结构不同于前面的链式存储而是顺序存储的二叉树。
顺序存储的二叉树为了保证存储连续,通常只考虑完全二叉树。

逻辑结构:
在这里插入图片描述

存储结构:
在这里插入图片描述

顺序存储的二叉树的性质:

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();
    }
}

猜你喜欢

转载自blog.csdn.net/waS_TransvolnoS/article/details/92065042