二叉树的顺序存储结构

定义一个长度为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.如果不是完全二叉树,依然按层序将各节点顺序存储

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

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

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


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/817311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux_CentOS学习笔记

文章目录 YUM源yum命令搭建并配置Yum软件仓库的大致步骤创建光盘Yum源实例Centos7实例Centos8实例 仅从光盘YUM源安装软件利用priorities插件安装多个yum源 第三方软件源清华大学软件源CentOS7 清华大学软件源 阿里云软件源CentOS7源信息CentOS7配置阿里软件源 中国科技大学 US…

Oracle 数据库 count的优化-避免全表扫描

Oracle 数据库 count的优化-避免全表扫描 select count(*) from t1; 这句话比较简单&#xff0c;但很有玄机&#xff01;对这句话运行的理解&#xff0c;反映了你对数据库的理解深度&#xff01; 建立实验的大表他t1 SQL> conn scott/tiger 已连接。 SQL> drop table …

利用机器学习进行图像分类:案例演示与代码实现

机器学习在图像处理领域有着广泛的应用&#xff0c;其中图像分类是一个重要的任务&#xff0c;它可以帮助我们将图像分成不同的类别。本文将介绍图像分类的基本概念&#xff0c;并通过一个实际的案例演示&#xff0c;展示如何使用Python和常用的机器学习库来实现图像分类。我们…

ubuntu22安装snipaste

Ubuntu 22.04 一、Snipaste 介绍和下载 Snipaste 官网下载链接: Snipaste Downloads 二、安装并使用 Snipaste # 1、进入Snipaste-2.8.9-Beta-x86_64.AppImage 目录&#xff08;根据自己下载目录&#xff09; cd /home/jack/Downloads/softwares/AppImage# 2、Snipaste-2.8.9-…

Spring框架第一篇(Spring概述与IOC思想)

文章目录 一、Spring概述二、Spring家族三、Spring Framework四、IOC思想五、IOC容器在Spring中的实现 一、Spring概述 Spring 是最受欢迎的企业级 Java 应用程序开发框架&#xff0c;数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。…

如何避免分享链接被反查账号

要避免分享链接被反查账号&#xff0c;可以遵循以下几个建议&#xff1a; 谨慎分享个人信息&#xff1a;在分享链接之前&#xff0c;请确保链接本身不含有个人信息&#xff0c;如用户名、邮箱地址或电话号码等。如果链接中包含这些敏感信息&#xff0c;那么这些信息可能会被他人…

LeetCode hot100-26

142. 环形链表 II 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测…

STM32之FreeRTOS移植

1.FreeRTOS的移植过程是将系统需要的文件和代码进行移植和裁剪&#xff0c;其移植的主要过程为&#xff1a; &#xff08;1&#xff09;官网上下载FreeRTOS源码&#xff1a;https://www.freertos.org/ &#xff08;2&#xff09;移植文件夹&#xff0c;在portable文件夹中只需…

Flask框架——安装与第一个应用

安装 Flask是一个轻量级的Python Web框架。它是一个微型框架&#xff0c;具有灵活性和可扩展性。Flask使用Python语言编写&#xff0c;它是一个开源框架&#xff0c;使得它可以自由地使用和修改。Flask框架可以用于构建任何类型的Web应用程序&#xff0c;包括单页面应用程序、…

003 【笔记神器】Obsidian:打造属于自己的万能工作台

前言&#xff1a;Obsidian 是一款很多大神都在用的笔记软件&#xff0c;具有强大的功能&#xff0c;能够满足日常各种笔记的需求。强大之处在于&#xff1a;Obsidian 能够安装各种强大的插件&#xff0c;实现各种功能。 废话不多说&#xff0c;玩转 Obsidian 仅需这篇文章足矣&…

护眼落地灯哪个牌子好?高分榜前五的护眼大路灯汇总!

落地灯面世之后就收到了诸多好评&#xff0c;但与此矛盾的是&#xff0c;每年都有大量关于光线不好刺眼的信息&#xff0c;长久使用下来眼睛疲劳、酸痛&#xff0c;根本达不到改善光线环境减少视觉疲劳的效果。不过大家无需过分忧虑&#xff0c;因为光线不好的问题问题主要是不…

VUE3.0对比VUE2.0

vue3.0 与 vue2.0的不同之处有以下几点&#xff1a; 数据响应式原理 3.0基于Proxy的代理实现监测&#xff0c;vue2.0是基于Object.defineProperty实现监测。 vue2.0 通过Object.defineProperty&#xff0c;每个数据属性被定义成可观察的&#xff0c;具有getter和setter方法&…

前端Vue3+uni+Ts

本次记录小兔仙仙的制作过程。 先看下我们的项目截图。主要是手机端&#xff0c;这里用了uniappVScode.三端适配的。可以打包成安卓和苹果。微信小程序。 首先&#xff1a;创建一个uni新的ts项目。 # 通过 git 从 gitee 克隆下载 登录 - Gitee.com git clone -b vite-ts http…

jar 反编译工具

Jar包常见的反编译工具介绍与使用_jar反编译-CSDN博客

构建跨设备3D应用:HOOPS的跨平台开发能力

在当今数字化和可视化需求不断提升的时代&#xff0c;三维技术的应用越来越广泛&#xff0c;尤其在制造、建筑、工程及媒体行业。HOOPS&#xff0c;由Tech Soft 3D开发&#xff0c;是一套全面的软件开发工具包&#xff0c;用于构建高性能的三维应用程序。该工具包涵盖了从三维渲…

微信小程序使用we-rich的一些修改和兼容富文本编辑器

不支持转换s标签&#xff0c;可在supportTags数组内添加后和识别不支持style&#xff0c;class&#xff0c;src以外的属性&#xff0c;可在if (key ‘style’ || key ‘class’ || key ‘src’)后增加key ‘width’|| key ‘height’&#xff0c;这样可以兼容富文本编辑器…

Java最长公共子序列知识点(含面试大厂题和源码)

最长公共子序列&#xff08;Longest Common Subsequence&#xff0c;简称LCS&#xff09;是计算机科学中的一个经典问题&#xff0c;主要涉及两个序列&#xff0c;并寻找这两个序列中最长的共有子序列。这个子序列不需要在原序列中连续&#xff0c;但必须保持元素的相对顺序。L…

Centos7在线安装mysql5.7

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 安装Mysql yum源1、卸载旧环境2、下载mysql yum源3、上传到自己服务器1&#xff09;、上传源2&#xff09;、安装yum源3&#xff09;、查看yum源是否安装成功 安装M…

信息系统项目管理师——管理类计算

风险管理——风险曝光度 风险曝光度概率*影响&#xff0c;概率指风险发生的概率&#xff0c;影响指风险一旦发生&#xff0c;受到影响的项。 题号【GX20061101](61) 知识点[风险曝光度] 风险的成本估算完成后&#xff0c;可以针对风险表中每个风险计算其风险曝光度。某软件小…

面试官:MySQL的自增 ID 用完了,怎么办?

如果你用过或了解过MySQL&#xff0c;那你一定知道自增主键了。每个自增id都是定义了初始值&#xff0c;然后按照指定步长增长&#xff08;默认步长是1&#xff09;。虽然&#xff0c;自然数是没有上限的&#xff0c;但是我们在设计表结构的时候&#xff0c;通常都会指定字段长…