二叉树的存储结构

本文部分图片截取自B站懒猫老师。
视频链接为:https://www.bilibili.com/video/BV1Gz411b7Rq?spm_id_from=333.999.0.0.

二叉树的存储结构

顺序存储结构

在这里插入图片描述
在这里插入图片描述
看下图
1、完全二叉树的顺序存储
在这里插入图片描述
2、一般二叉树的顺序存储
在这里插入图片描述
看上图中的编号是否有些迷惑,注意细节,这个是按照完成二叉树编号来进行的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下图的右斜树所示。
如果我们也按照完成二叉树编号的方式进行呢?
在这里插入图片描述
这样势必会造成存储空间的浪费。
在这里插入图片描述
所以
在这里插入图片描述

二叉链表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
假设有 n 个结点,而每个结点有两个指针,所以一共有 2n 个指针。
再来看 n 个结点一共有多少条边呢?

除了根结点以外,每个结点都连了一条边,所以 n 个结点有 n-1 条边。
而每一条边又都对应了一个指针,所以 n-1 条边就对应了 n-1 个指针。
总共有 2n 个指针,除去边所对应的指针,剩下的就是空指针。从而具有 n 结点的二叉链表中,有 n+1 个空指针。
在这里插入图片描述
可以看出,差不多有一半存储了空指针,所以浪费空间。在后面学习到的线索二叉树可以将这些空间给利用起来。
在这里插入图片描述
不能够通过孩子结点来找到它的双亲,那怎么办呢?我们可以采用三叉链表。

三叉链表

在这里插入图片描述
在这里插入图片描述

三叉链表的静态链表表示形式

在这里插入图片描述
也就是说右边的二叉树可以用左边的静态数组来表示,数组中的每个元素都是一个结构体,由
在这里插入图片描述
组成。上图中的 -1 代表的是空指针的概念。
在这里插入图片描述
缺点:不适合频繁进行插入和删除操作,只适合变化很小的二叉树。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuechanba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值