树结构及其算法-用链表来实现二叉树
目录
树结构及其算法-用链表来实现二叉树
C++代码
树结构及其算法-用链表来实现二叉树
以链表实现二叉树就是使用链表来存储二叉树,也就是运用动态分配内存和指针的方式来建立二叉树。
使用链表来表示二叉树的好处是节点的增加与删除操作相当容易,缺点是很难找到父节点,除非在每一个节点多增加一个指向父节点的指针。
struct TreeNode {int data;TreeNode* leftNode;TreeNode* rightNode;TreeNode(int tempData, TreeNode* tempLeftNode = nullptr, TreeNode* tempRightNode = nullptr) {this->data = tempData;this->leftNode = tempLeftNode;this->rightNode = tempRightNode;}
};
C++代码
#include<iostream>
using namespace std;struct TreeNode {int data;TreeNode* leftNode;TreeNode* rightNode;TreeNode(int tempData, TreeNode* tempLeftNode = nullptr, TreeNode* tempRightNode = nullptr) {this->data = tempData;this->leftNode = tempLeftNode;this->rightNode = tempRightNode;}
};class Tree {
private:TreeNode* treeNode;
public:Tree() {treeNode = nullptr;}TreeNode* GetTreeNode() {return this->treeNode;}void AddNodeToTree(int* tempData, int tempSize) {for (int i = 0; i < tempSize; i++) {TreeNode* currentNode;TreeNode* newNode;int flag = 0;newNode = new TreeNode(tempData[i]);if (treeNode == nullptr)treeNode = newNode;else {currentNode = treeNode;while (!flag) {if (tempData[i] < currentNode->data) {if (currentNode->leftNode == nullptr) {currentNode->leftNode = newNode;flag = 1;}elsecurrentNode = currentNode->leftNode;}else {if (currentNode->rightNode == nullptr) {currentNode->rightNode = newNode;flag = 1;}elsecurrentNode = currentNode->rightNode;}}}}cout << "完成建立二叉树" << endl;}void Inorder(TreeNode* tempTree) {if (tempTree != nullptr) {Inorder(tempTree->leftNode);cout << tempTree->data << " ";Inorder(tempTree->rightNode);}}
};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 = new Tree;tree->AddNodeToTree(data, 8);tree->Inorder(tree->GetTreeNode());return 0;
}
输出结果
相关文章:

树结构及其算法-用链表来实现二叉树
目录 树结构及其算法-用链表来实现二叉树 C代码 树结构及其算法-用链表来实现二叉树 以链表实现二叉树就是使用链表来存储二叉树,也就是运用动态分配内存和指针的方式来建立二叉树。 使用链表来表示二叉树的好处是节点的增加与删除操作相当容易,缺点…...
openwrt(三):在hostapd获取已关联的STA的MAC地址
在深度开发openwrt的hostapd模块的时候,有些功能的实现需要获取已关联的sta的mac地址,下面是相关的方法描述: 第一、在sta_info.c文件中,可以找到一个名为struct hostap_sta_info * hostapd_get_sta(struct hostapd_data *hapd, …...

为何袁世凯要把“元宵节”改为“上元节”?
网民把春节除夕日排除在法定假期之外的相关热议,在微博评论区部分已被关闭。官方学者的解释是:“回归传统。” 这就令人难免要回顾历史,并发觉只有在袁世凯称帝之后,才有过取消“元宵节”改为“上元节”的笑话,因为“元…...

python将图片序列保存成gif
这里用到的模块是imageio。用imageio.mimsave即可将图片序列保存成gif动态图。以下是本人编写的小实验: import cv2 import imageiopaths ["./images/0001.png", "./images/0002.png", "./images/0003.png", ...] frames [] for i…...
UE4用C++修改蓝图对象的属性值
if (auto Property FindFProperty<FStrProperty>(Class, "A")){Object->Modify();Property->SetPropertyValue_InContainer(Object.GetClass(), "OK");}...

供应商等级:一级、二级和三级供应商之间有什么区别
作为一名专业采购人员,你知道拥有一个可靠且具有成本效益的供应链有多么重要。确保供应链顺利运行的方法之一就是利用供应商分级。 什么是供应商分级? 供应商分级是根据供应商的绩效和对企业的重要性,对其进行分类的做法。 因此,…...
软考 系统架构设计师系列知识点之净室软件工程(3)
接前一篇文章:软考 系统架构设计师系列知识点之净室软件工程(2) 所属章节: 第5章. 软件工程基础知识 第5节. 净室软件工程 相关试题 1. 以下关于软件开发方法的叙述,错误的是()。 A. 对于较为…...
『VUE H5页面 - PDF预览』
使用依赖:vue-pdf实现需求:将 PDF url 地址 转换为本地页面预览 <template><div class"pdf-preview"><NavBar /><div class"container"><VuePdf v-for"i in numPages" :key"i" cla…...

使用lua-resty-request库编写爬虫IP实现数据抓取
目录 一、lua-resty-request库介绍 二、使用lua-resty-request库进行IP数据抓取 1、获取IP地址 2、设置请求 3、处理数据 三、代码实现 四、注意事项 五、总结 本文将深入探讨如何使用lua-resty-request库在爬虫程序中实现IP数据抓取。我们将首先介绍lua-resty-request…...

vue-admin-templete项目配置在手机上预览
参考文档: https://blog.csdn.net/qq_29752857/article/details/109802801想要在手机上预览本地打开的vue-admin-templete项目,首先要确保手机和电脑在同一网段。 参考文档:https://blog.csdn.net/m0_57236802/article/details/1315234471.查…...

服务号升级订阅号的流程
服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?首先我们要知道服务号和订阅号有什么区别。服务号侧重于对用户进行服务,每月可推送4次,每次最多8篇文章,发送的消息直接显示在好友列表中。订阅号更侧重于信息传…...
redhat7.4 安装lnmp操作环境
PacVim安装 https://baijiahao.baidu.com/s?id1601033830453371540&wfrspider&forpc 安装php https://www.cnblogs.com/alliancehacker/p/12255445.html https://blog.csdn.net/weixin_39709920/article/details/104274545 安装mysql https://www.cnblogs.com/laumian…...
Java判断是否有特殊字符串
//特殊字符串过滤private static String REGEX_RULE "[ _~!#$%^&*()|{}:;,\\[\\].<>/?~!#¥%……&*()——|{}【】‘;:\"”“’。,、?]|\n|\r|\t";pri…...

服务器搭建:从零开始创建自己的Spring Boot应用【含登录、注册功能】
当然,你可以先按照IDEA搭建SSM框架【配置类、新手向】完成基础框架的搭建 步骤 1:设计并实现服务器端的用户数据库 在这个示例中,我们将使用MySQL数据库。首先,你需要安装MySQL并创建一个数据库以存储用户信息。以下是一些基本步…...

家用小型洗衣机哪款性价比高?公认好用四款内衣洗衣机推荐
小型的内衣洗衣机由于体积小巧,而且实用,非常适合没有太多空闲时间的上班族以及小型住户的使用。想要挑选到一款能够满足每日清洗需要,同时拥有便携与高效率的小型内衣洗衣机,也许会让你选择得有些烦恼。我们为大家挑选了一些性价…...

Sui zkSend,创建链接可直接发送SUI,快来体验吧
基于zkLogin和Sui的本机密码学构建,zkSend允许用户创建包含特定数量SUI的链接。该链接可以通过任何消息客户端发送,例如电子邮件和直接消息,甚至可以在媒体上转换成QR码。 使用zkSend发送SUI比复制和粘贴钱包地址,然后授权token转…...

SQL面试
#(1)请写出要查询员工J开头的名字其工号(EMPNO)及部门名称(DEPTNA)的 SQL语句SELECT e.emp,e.name,d.deptna FROM emp e left join dept d on d.deptno e.deptno where e.name like J%#(2)请写出要查询 Kevin 所在部门的部门代号(DEPTNO)及部门名称(DEPTNA)的 SQL 语句SELECT e…...

Elasticsearch(一)---介绍
简介 Elasticsearch是一个基于Lucene的实际的分布式搜索和分析引擎。设计用于云计算中,能够达到近实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful接口。 官网地址:Elasticsearch 平台 — 大规模查找…...
Vscode LinuxC++环境配置
C环境配置 文章目录 C环境配置一、Visual Studio Code相关信息二、Python开发环境配置三、C 开发环境配置四、第一个C程序五、附录:vs code 中变量解释 一、Visual Studio Code相关信息 Visual Studio Code 下载地址:https://code.visualstudio.com/dow…...

【tensorboard打开失败】No dashboards are active for the current data set.
这里我再跟视频学的时候,找了很多的指令,说是对应版本不一样,但是发现用了很多指令都可以弹出来跳转的url,那应该就不是输入指令的问题 直到我想把logs里面的文件删掉重新跑的时候,我突然注意到这里有中文字符…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...