看数据结构写代码(22) 二叉树的顺序存储方式

本文介绍了二叉树的基本特性和完全二叉树的概念,强调了完全二叉树在顺序存储中的优势。通过节点编号规则,阐述了如何在数组中存储完全二叉树,并指出这种方式适用于完全二叉树,但会存在空间浪费的问题。同时,作者分享了自己的代码实现,期待读者提供反馈。
摘要由CSDN通过智能技术生成

二叉树 是 一个 节点 的度最多是2 ,并且区分 左右子树的 特殊树。

二叉树 有一些特性,这些特性 是 写 二叉树顺序表的 重要依据,所以先介绍一下:

1.k层的二叉树,最多有  2 的 k次方 -1 个节点,如果 节点数达到最大值,称为 满二叉树。

2.第k层的二叉树,最多 有 2的 k-1 次方 个节点

3.度为0的节点叫做叶子节点 n0,度为2的节点 n2,    no = n2+1

在介绍第4点 之前,先说明一个概念:.完全二叉树指的是 从 第一层 到 最后一层,从左 到 右,从1 开始  给节点 编号,中间不存在 中断的节点的 二叉树。


第4,5点 都是 关于 完全 二叉树的

4.一个节点数 为n的完全二叉树的 深度 k为 : k = log2N + 1(log以2为底的N +1,log2N向下取整)

5.一个节点数 为n的完全二叉树,对于任意节点i,

5.1如果 2*i > n则 节点i无左孩子,否则,左孩子为 2*i

5.2 如果 2*i + 1 >n ,则节点 无 右孩子,否则 右孩子 为 2* i+1,

5.3  i==1 时,节点i 是根节点,无双亲,否则 双亲节点 为  i/2 向下取整


下面 开始 说明二叉树的 顺序 存储方式。

二叉树的顺序存储方式 ,是按照 完全二叉树的 顺序 将 节点 存放在一个 数组里,并 将 不存在的节点 设置 为 0.

下面 给出 存储的 基本形态:


这样的存储方式 有 许多的 无用节点 占据了 存储空间,造成了 空间的 浪费。所以 这种存储方式 只适合 完全二叉树。

下面 给出 我的代码:

欢迎指出代码不足

// sqBinaryTree.cpp : 二叉树的顺序存储方式
//特点:只适合完全二叉树,否则浪费存储空间巨大

#include "stdafx.h"
#include <stdlib.h>
#include &
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值