day11-Java(二叉树的存储)

本文介绍了二叉树的顺序存储结构,包括如何使用循环列表存储完全二叉树,并探讨了顺序存储的优缺点。接着详细讲解了BFS遍历,通过代码展示了如何进行层序遍历,并对比了层序遍历与BFS遍历的区别。最后提供了代码测试结果。
摘要由CSDN通过智能技术生成

二叉树的存储

一、顺序存储结构

二叉树的顺序存储是指用一组地址连续的存储单元依次自上而下,自左至右存储完全二叉树上的节点元素,老师的代码中使用的是前面使用过的循环列表对二叉树进行存储。
对于一般的二叉树(如代码中构建的二叉树),为了让数组下标能反映二叉树中结点之间的逻辑关系,只能添加一些并不存在的空节点,让其每个节点与完全二叉树上的结点相对照,再存储到一维数组的对应分量中。昨天的二叉树如下图:
在这里插入图片描述
用一个向量来存储:
[a, b, c, 0, d, e, 0, 0, 0, f, g]
优点:仅需要一个向量,简单粗暴
缺点:对于实际的二叉树,很多子树为空,导致大量的0值。
在最坏的情况下,一个高度为h且只有h个节点的单支树却需要占据近 2 h − 1 {2^h -1} 2h1个存储空间。
使用顺序存储结构存储二叉树还需注意父节点与子节点在同一向量中,对应序号的数学关系:
n L e f t C h i l d = 2 ∗ n R o o t + 1 {n_{LeftChild} = 2 * n_{Root} + 1} nLeftChild=2nRoot+1
n R i g h t C h i l d = 2 ∗ n R o o t + 2 {n_{RightChild} = 2 * n_{Root} + 2} nRightChild=2nRoot+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值