当前位置: 首页 > news >正文

树结构及其算法-用数组来实现二叉树

目录

树结构及其算法-用数组来实现二叉树

C++代码 


树结构及其算法-用数组来实现二叉树

使用有序的一维数组来表示二叉树,首先可将此二叉树假想成一棵满二叉树,而且第k层具有2^{k-1}个节点,按序存放在一维数组中。首先来看看使用一维数组建立二叉树的表示方法以及数组索引值的设置。

可以看出此一维数组中的索引值有以下关系:

  1. 左子树的索引值是父节点的索引值乘2。
  2. 右子树的索引值是父节点的索引值乘2加1。

接着来看如何以一维数组建立二叉树的实例,实际上就是建立一棵二叉查找树。这是一种很好的排序应用模式,因为在建立二叉树的同时数据就经过了初步的比较判断,并按照二叉树的建立规则来存放数据。二叉查找树具有以下特点:

  1. 可以是空集合,若不是空集合,则节点上一定要有一个键值。
  2. 每一个数根的值需大于左子树的值。
  3. 每一个树根的值需小于右子树的值。
  4. 左右子树也是二叉查找树。
  5. 树的每个节点值都不相同。 

C++代码 

#include<iostream>
using namespace std;class Tree {
private:int* treeNode;int size;int level;
public:Tree(int size) {treeNode = new int[size] {0};this->size = size;level = 0;}void SetTree(int* tempData, int tempSize) {for (int i = 0; i < tempSize; i++) {for (level = 1; treeNode[level] != 0;) {if (tempData[i] > treeNode[level])level = level * 2 + 1;elselevel = level * 2;}treeNode[level] = tempData[i];}}void PrintTree() {for (int i = 1; i < size; i++)cout << treeNode[i] << " ";cout << endl;}
};int main() {int data[]{ 6, 3, 5, 9, 7, 8, 4, 2 };cout << "原始数据:" << endl;for (int i = 0; i < 8; i++)cout << data[i] << " ";cout << endl;Tree tree(16);tree.SetTree(data, 8);cout << "二叉树数据:" << endl;tree.PrintTree();return 0;
}

输出结果

相关文章:

树结构及其算法-用数组来实现二叉树

目录 树结构及其算法-用数组来实现二叉树 C代码 树结构及其算法-用数组来实现二叉树 使用有序的一维数组来表示二叉树&#xff0c;首先可将此二叉树假想成一棵满二叉树&#xff0c;而且第层具有个节点&#xff0c;按序存放在一维数组中。首先来看看使用一维数组建立二叉树的…...

知识图谱与大模型结合方法概述

《Unifying Large Language Models and Knowledge Graphs: A Roadmap》总结了大语言模型和知识图谱融合的三种路线&#xff1a;1&#xff09;KG增强的LLM&#xff0c;可在LLMs的预训练和推理阶段引入KGs&#xff1b;2&#xff09;LLM增强KG&#xff0c;LLM可用于KG构建、KG emb…...

ASO优化之如何制作Google Play的长短描述

应用的描述以及标题和图标是元数据中最关键的元素&#xff0c;可以影响用户是否决定下载我们的应用程序。简短描述的长度限制为80个字符&#xff0c;它提供了更多的有关应用背景信息的机会。 1、简短描述帮助用户快速了解我们应用。 确保内容丰富的同时&#xff0c;保持简洁和…...

Python-platform模块

platform目录 前言一、platform.system()二、platform.release()三、platform.python_version()四、platform.machine()五、platform.python_implementation()六、其他代码示例七、help总结前言 Python platform模块是一个用于获取和操作操作系统相关信息的内置模块。它提供了…...

Yolov5旋转框(斜框)检测自己的数据集,附带代码模型可以收敛

文章目录 1. 制作数据集1.1 标注数据集1.2标签转换1.3 数据集划分2. 环境搭建1.安装nms_rotated2.安装DOTA_devkit3. 代码讲解3.1坐标表示3.2 损失函数4.训练+测试链接后面附上百度网盘链接,内部包含数据集。 下一篇介绍tensorRT部署yolov5-obb 1. 制作数据集 ​ 标注软件为…...

嵌入式应用选择正确的系统设计方法:第三部分

产品质量低下的原因有很多&#xff0c;例如&#xff0c;产品制造粗糙&#xff0c;组件设计不当&#xff0c;架构不佳以及对产品的要求了解不多。点击领取嵌入式物联网学习路线 必须设计质量。 您不能测试出足够的错误来交付高质量的产品。的质量保证&#xff08;QA&#xff09…...

pthread_attr_getstacksize 问题

最近公司里遇到一个线程栈大小的问题&#xff0c;借此机会刚好学习一下这个线程栈大小相关的函数。如果公司里用的还是比较老的代码的话&#xff0c;都是用的 pthread 库支持线程的&#xff0c;而不是 c11 里的线程类。主要有两个相关函数&#xff1a;pthread_attr_setstacksiz…...

anaconda常见语法

anaconda常见语法 一、镜像 1.添加镜像channel conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/2.删除镜像channel conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/3.展示目前已有的镜像…...

reactive与ref VCA

简介 Vue3 最大的一个变动应该就是推出了 CompositionAPI&#xff0c;可以说它受ReactHook 启发而来&#xff1b;它我们编写逻辑更灵活&#xff0c;便于提取公共逻辑&#xff0c;代码的复用率得到了提高&#xff0c;也不用再使用 mixin 担心命名冲突的问题。 ref 与 reactive…...

小程序day01

简介: 小程序项目的基本结构 页面的组成部分 一个页面对应一个文件夹&#xff0c;所有有关的内容都放在一起。 JSON配置文件 2.app.json文件 3.project.config.json文件 4.sitemap.json文件 5.页面的.json配置文件 6. 新建小程序页面 7.修改项目首页 小程序代码构成 小程序的宿…...

redis主要支持的数据类型有哪些?—— 筑梦之路

Redis支持的主要数据类型&#xff1a; 1、字符串&#xff08;String&#xff09;&#xff1a;字符串是最简单的数据结构&#xff0c;可以存储文本或二进制数据。常用操作&#xff1a;设置值、获取值、追加、自增自减等。 2、列表&#xff08;List&#xff09;&#xff1a;列表是…...

解决国际阿里云服务器挂载云盘的问题!!

跟着云计算技术的开展&#xff0c;越来越多的企业和个人挑选运用云服务器。然而&#xff0c;在运用过程中&#xff0c;可能会遇到一些问题&#xff0c;比如云服务器无法挂载云盘。这篇文章将详细说明如何处理这个问题。 一、云服务器无法挂载云盘的原因 云服务器无法挂载云盘可…...

基于吉萨金字塔建造算法的无人机航迹规划-附代码

基于吉萨金字塔建造算法的无人机航迹规划 文章目录 基于吉萨金字塔建造算法的无人机航迹规划1.吉萨金字塔建造搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用吉萨金字塔建造算法…...

高频SQL50题(基础版)-1

文章目录 主要内容一.SQL练习题1.1757-可回收且抵制的产品代码如下&#xff08;示例&#xff09;: 2.584-寻找用户推荐人代码如下&#xff08;示例&#xff09;: 3.595-大的国家代码如下&#xff08;示例&#xff09;: 4.1148-文章浏览代码如下&#xff08;示例&#xff09;: 5…...

RecyclerView自定义LayoutManager从0到1实践

此前大部分涉及到 RecyclerView 页面的 LayoutManager基本上用系统提供的 LinearLayoutManager 、GridLayoutManager 就能解决&#xff0c;但在一些特殊场景上还是需要我们自定义 LayoutManager。之前基本上没有自己写过&#xff0c;在网上看各种源码各种文章&#xff0c;刚开始…...

【虹科干货】5个关于微服务的误解

你认为微服务架构能为你带来什么&#xff1f;难道微服务真的是一劳永逸的吗&#xff1f;又或者&#xff0c;难道微服务的威力并不如传闻所言&#xff1f;微服务架构应当如何设计才能真正彰显它作为一种解决方案的好处呢&#xff1f; 文章速览&#xff1a; 误解一&#xff1a;…...

利用卷影拷贝服务攻击域控五大绝招

点击星标&#xff0c;即时接收最新推文 在微软Active Directory&#xff08;活动目录&#xff09;中&#xff0c;所有的数据都被保存在ntds.dit中&#xff0c; NTDS.DIT是一个二进制文件&#xff0c; 它存在于域控制器中的 %SystemRoot%\ntds\NTDS.DIT。ntds.dit包括但不限于Us…...

web3 在React dapp中全局管理web3当前登录用户/智能合约等信息

上文 Web3 React项目Dapp获取智能合约对象我们在自己的前端dapp项目中链接获取到了 自己的智能合约 我们继续 我们还是先启动ganache环境 终端输入 ganache -d然后发布一下我们的智能合约 打开我们的合约项目 终端输入 truffle migrate --reset这样 我们的智能合约就部署到区…...

Golang硬件控制:将软件力量扩展到物理世界

引言 在过去的几十年中&#xff0c;计算机科学和软件工程领域取得了巨大的发展和进步。现在&#xff0c;我们可以编写各种强大的软件应用程序来解决各种问题。然而&#xff0c;软件并不仅限于在计算机上运行&#xff0c;它也可以扩展到物理世界中。这就是Golang的魅力所在。Go…...

Docker 查看Image镜像的Dockerfile方法

1、创建测试镜像 Dockerfile: FROM centos LABEL maintainer"NGINX Docker Maintainers docker-maintnginx.com" RUN yum install -y nginx RUN echo "Nginx Web: CMD defining default arguments for an ENTRYPOINT" > /usr/share/nginx/html/index.…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

xmind转换为markdown

文章目录 解锁思维导图新姿势&#xff1a;将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件&#xff08;ZIP处理&#xff09;2.解析JSON数据结构3&#xff1a;递归转换树形结构4&#xff1a;Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...

【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析

1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器&#xff08;TI&#xff09;推出的一款 汽车级同步降压转换器&#xff08;DC-DC开关稳压器&#xff09;&#xff0c;属于高性能电源管理芯片。核心特性包括&#xff1a; 输入电压范围&#xff1a;2.95V–6V&#xff0c;输…...

深入解析 ReentrantLock:原理、公平锁与非公平锁的较量

ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...