二叉树的顺序存储


二叉树的顺序存储:

二叉树是一种常用的树结构,它是树结构的另一种重要类型,其特征是树中每个结点最多有两个子树。


要存储一颗二叉树,必须存储其所有结点的数据信息,左孩子和右孩子地址,即可用顺序结构存储,也可以链接结构存储。
二叉树的顺序存储是指将二叉树中所有结点按层次顺序存放在一块地址连续的存储空间中,同时反映出二叉树中结点间的逻辑关系。

对于完全二叉树,结点的层次顺序反映了其结构,可按层次顺序给出一颗完全二叉树之结点的编号。对于下面这棵二叉树,其中A[1]存储该二叉树的根结点,A[i]存储二叉树中编号为i的结点。其中结点A[i]的左孩子若存在存放在A[2i]处。而右孩子若存在,则存放在A[2i+1]处。

这种顺序存储方式是完全二叉树最简单,最节省空间的存储方式,多数完全二叉树应用算法都采用了这种顺序存储方式。它实际上只存储了结点信息域之值。而未存储其左孩子和右孩子地址,通过计算可以找到它的左孩子、右孩子和父结点,寻找子孙结点和祖先结点也十分方便。

但是,这种方法应用到非完全二叉树时,却有很多缺点。如果采用上述的顺序存储方式。按照层次顺序,对非完全二叉树之结点进行编号,则这时的编号不能和结点一一对应。这样增加了用于存储虚结点的空间。

实际上,只有A[1],A[3],A[7],A[15] 4个数组元素的存储空间能被充分利用,而其他11个数组元素所占用的空间却被浪费。

显然,对非完全二叉树,顺序存储结构可能会浪费大量存储空间。此外,同线性表的顺序存储一样,二叉树顺序存储方式对插入或删除结点等操作不够方便。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值