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

本文深入探讨了顺序存储的二叉树概念,包括其逻辑结构、存储特性及遍历方法。通过具体实例,详细解释了节点间的关系计算,如左右子节点及父节点的下标确定方式,同时提供了顺序存储二叉树的Java实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值