二叉树的顺序存储结构

本文介绍了如何使用长度为MaxSize的数组顺序存储完全二叉树,包括初始化、节点关系计算以及非完全二叉树的应用。强调了这种存储方式在空间利用上的缺点,指出它适用于完全二叉树的情况。
摘要由CSDN通过智能技术生成

定义一个长度为MaxSize的数组t,按照从上至下、从左至右的顺序依次存储完全二叉树中的各个结点。

TreeNode t[MaxSize];

 

#define MaxSize 100
struct TreeNode {
    ElemType value;       //结点中的数据元素
    bool isEmpty;         //结点是否为空
};




for (int i=0; i<MaxSize; i++){         //初始化时所有节点标记为空
    t[i].isEmpty=true;
}

 

tips:可以让第一个位置空缺,保证数组下标和结点编号一致

几个重要常考的基本操作:

1. i的左孩子—2i
2. i的右孩子—2i+1

3. i的父节点—[i/2]
4. i所在的层次——[log2(n + 1)]或[log2n]+ 1

1.若完全二叉树中共有n个结点,则

判断i是否有左孩子?      2i<=n
判断i是否有右孩子?      2i+1<=n
判断i是否是叶子/分支结点?      i > [n/2] ?

2.如果不是完全二叉树,依然按层序将各节点顺序存储

二叉树的顺序存储中,一定要把二叉树的结点编号与完全二叉树对应起来
 

 缺点:会有大量的空间闲置

结论:二叉树的顺序存储结构,只适合存储完全二叉树


 

  • 23
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值