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

树·c++

树(Tree) 是一种非线性的数据结构,它由若干个 节点(Node) 组成,并通过 边(Edge) 相互连接。树的结构类似于现实中的树,其中 根节点(Root Node) 位于顶部,而其他节点则以分支的方式连接在根节点下面,形成分层结构。

树结构具有以下特点:

  1. 根节点: 树的顶部节点,没有父节点。

  2. 节点: 除了根节点外,每个节点都有且只有一个父节点,并可以有零个或多个子节点。

  3. 子节点: 一个节点的直接下属节点。

  4. 父节点: 一个节点的直接上级节点。

  5. 叶节点: 也叫孩子节点,是指父亲节点的一个下属

  6. 分支: 节点与其子节点之间的连接,用于表示节点之间的关系。

  7. 路径: 从根节点到某个节点的所有连续分支所组成的序列。

  8. 深度(Depth): 节点在树中的层数,根节点为第一层,依次递增。

  9. 高度(Height): 树中节点的最大深度。

在树中还有一种树叫 二叉树 ,是指一个父亲节点最多有2个叶节点 ,二叉树又分为普通二叉树、满二叉树、完全二叉树:

  1. 普通二叉树: 普通二叉树又分为只有左子树、只有右子树和普通二叉树,只有左子树 是指只有左子树,没有右子树, 只有右子树 是指只有右子树,没有左子树

  2. 满二叉树: 满二叉树是指一个二叉树在一定的高度内这个二叉树是满的(指没有空这的结点位置)

  3. 完全二叉树: 完全二叉树是指一个满二叉树中只能有最后一层的还得是右边的结点,不能是左边的结点,这叫满二叉树

树的存储分为链式存储和顺序存储:

  1. 顺序存储: 顺序存储是用数组模拟,适用于满二叉树和完全二叉树,但复杂度较高,如果树的分枝比较稀疏,建议使用链式存储
  2. 链式存储: 链式存储是用和链表差不多的存储方式存储的,链式存储适用于稀疏图,是每个结点都会记住自己的左孩子和右孩子的名字,链式存储定义框架如下:
const int N=1e4+10;	//这里根据题目要求修改
struct node
{int lchild,rchild;	//这里是左孩子和右孩子
}a[N];

树的遍历分为bfs和dfs:

  1. dfs: 深度优先搜索,有三种, 先序遍历、中序遍历、后序遍历 ,先序遍历是先遍历根,在遍历左子树和右子树,中序遍历是先遍历左子树,在遍历根和右子树,后序遍历是先遍历左子树,在遍历右子树和根

  2. bfs: 广度优先搜索,也叫 层序遍历 ,是一层一层的遍历

相关文章:

树·c++

树(Tree) 是一种非线性的数据结构,它由若干个 节点(Node) 组成,并通过 边(Edge) 相互连接。树的结构类似于现实中的树,其中 根节点(Root Node) 位…...

vuejs 设计与实现 - 双端diff算法

我们介绍了简单 Diff 算法的实现原理。简单 Diff 算法利用虚拟节点的 key 属性,尽可能地复用 DOM元素,并通过移动 DOM的方式来完成更新,从而减少不断地创建和销毁 DOM 元素带来的性能开销。但是,简单 Diff 算法仍然存在很多缺陷&a…...

RISC-V在快速发展的处理器生态系统中找到立足点

原文:RISC-V Finds Its Foothold in a Rapidly Evolving Processor Ecosystem 作者:Agam Shah 转载自:https://thenewstack.io/risc-v-finds-its-foothold-in-a-rapidly-evolving-processor-ecosystem/ 以下是正文 But the open source pr…...

面试题02

这里写目录标题 主存储器和CPU之间增加Cache的目的是?判断一个char变量c1是否为小写字母循环链表顺序存储的线性表,访问结点和增加删除结点的时间复杂度请列举你所知道的c/c++ 语言中引入性能开销或阻碍编译优化的语言特性,并尝试说明对应的解决办法请列举CPU cache对编程开…...

第六章 SpringBoot注解 @ConditionalOnBean

满足条件的则进行组件的注入 Configuration(proxyBeanMethods true) //告诉SpringBoot这是一个配置类 配置文件 ConditionalOnBean(name "tom") public class MyConfig {Bean("tom")public Pet tom(){return new Pet("tomPet");}/*** 外部无论…...

MySQL8的下载与安装-MySQL8知识详解

本文的内容是mysql8的下载与安装。主要讲的是两点:从官方网站下载MySQL8安装和从集成环境安装MySQL8。 一、从官方网站下载MySQL8.0安装 MySQL8.0官方下载地址是:(见图) 官方正式版的最新版本是8.0.34,也推出了创新版…...

ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960)

ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) 二、CVE-2022-23960 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) Title TF-A披露通过分支预测目标重用(branch prediction target reuse)引发的前瞻执行处理器漏洞 CV…...

docker实现Nginx

文章目录 1.docker 安装2.docker环境实现Nginx 1.docker 安装 1.使用环境为红帽8.1,添加源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2.安装 yum install docker-ce docker-ce-cli containerd.io显示出错 Docker C…...

【Java 回忆录】Java全栈开发笔记文档

这里能学到什么? 实战代码文档一比一记录实战问题和解决方案涉及前端、后端、服务器、运维、测试各方面通过各方面的文档与代码,封装一套低代码开发平台直接开腾讯会议,实实在线一起分享技术问题核心以 Spring Boot 作为基础框架进行整合后期…...

数据结构:力扣刷题

题一:旋转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 思路一: 创建reverse()函数传入三个值分别为数组地址,从第几个数组元素开始,结束元素位置; 在r…...

【Java】常用设计模式的理解

设计模式 前言 有一些重要的设计原则在开篇和大家分享下,这些原则将贯通全文: 面向接口编程,而不是面向实现。这个很重要,也是优雅的、可扩展的代码的第一步,这就不需要多说了吧。 职责单一原则。每个类都应该只有一…...

python - 爬虫简介

什么是爬虫? 模拟浏览器对网站服务器发送请求解析服务器返回的响应数据,并保存数据 爬虫能获取哪些数据? 原则上所有可以通过浏览器获取的数据都可以爬取爬虫也只能获取爬取浏览器可以正常获取的数据 爬虫的应用场景? 数据分…...

【结构型设计模式】C#设计模式之外观模式

题目描述: 假设你正在开发一个音乐播放器应用程序,该应用程序需要与多个子系统进行交互,包括音频解码、音量控制和播放控制等。请使用外观模式设计一个音乐播放器的外观类,并实现相应的子系统类。 要求: 创建一个外观…...

Linux网络编程 socket编程篇(一) socket编程基础

目录 一、预备知识 1.IP地址 2.端口号 3.网络通信 4.TCP协议简介 5.UDP协议简介 6.网络字节序 二、socket 1.什么是socket(套接字)? 2.为什么要有套接字? 3.套接字的主要类型 拓】网络套接字 三、socket API 1.socket API是什么? 2.为什么…...

【二】SPI IP核的使用

【一】SPI IP核使用:传送门 基于qsys通过spi外部总线协议对sd卡进行读写操作 一、实验平台与实验的目的: ​ 正点原子开拓者、芯片型号:EP4CE10F17C8;还需要一张sd卡。 ​ 该实验主要是利用SPI IP核驱动SD卡来实现读写实验&am…...

面试热题(二叉树的锯齿形层次遍历)

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行) 输入:root [3,9,20,null,null,15,7] 输出:[[3…...

JVM—内存管理(运行时数据区)、垃圾回收

背景介绍 当JVM类加载器加载完字节码文件之后,会交给执行引擎执行,在执行的过程中会有一块JVM内存区域来存放程序运行过程中的数据,也就是我们图中放的运行时数据区,那这一块运行时数据区究竟帮我们做了哪些工作?我们…...

一百五十一、Kettle——Linux上安装的kettle8.2开启carte服务

一、目的 kettle8.2在Linux上安装好可以启动界面、并且可以连接MySQL、Hive、ClickHouse等数据库后,准备在Linux上启动kettle的carte服务 二、实施步骤 (一)carte服务文件路径 kettle的Linux运行的carte服务文件是carte.sh (二…...

19. python从入门到精通——Web编程

HTTP协议 HTTP协议的常用方法 方法 描述 GET 请求指定的页面信息,并返回实体主体。 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 …...

PostMan 教程

安装https://www.cnblogs.com/mafly/p/postman.html Postman 使用方法详解https://blog.csdn.net/fxbin123/article/details/80428216 postman进行http接口测试https://blog.csdn.net/five3/article/details/53021084 postman的使用方法详解!最全面的教程https:/…...

Real-ESRGAN-ncnn-vulkan终极指南:3分钟让模糊图片变高清的AI神器

Real-ESRGAN-ncnn-vulkan终极指南:3分钟让模糊图片变高清的AI神器 【免费下载链接】Real-ESRGAN-ncnn-vulkan NCNN implementation of Real-ESRGAN. Real-ESRGAN aims at developing Practical Algorithms for General Image Restoration. 项目地址: https://gitc…...

【产品底稿 07】商助慧 Admin 运维模块落地:从 “能跑” 到 “能运维”,3 个页面搞定日常排障

一、前言 今天没有新增 AI 业务功能,也没有重构核心逻辑,只做了一件事:给商助慧 Admin 后台补上了三个 “工程化细节”。 很多人做项目,写完业务接口就结束了,但真正支撑项目长期迭代的,恰恰是这些 “看不…...

E7Helper:第七史诗玩家解放双手的终极自动化解决方案

E7Helper:第七史诗玩家解放双手的终极自动化解决方案 【免费下载链接】e7Helper 【Epic Seven Auto Bot】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支持📺&a…...

别再踩坑了!Avue Dynamic子表单自定义操作列和序号列的正确姿势(slot: true + cell: false避坑指南)

Avue Dynamic子表单深度实践:插槽配置与自定义操作列全解析 在Vue生态的中后台开发领域,Avue作为基于Element UI的增强框架,其Dynamic子表单功能因其动态数据处理的便捷性而广受欢迎。但当开发者需要实现高度自定义的交互界面时,特…...

终极指南:IPXWrapper让Windows 11经典游戏重获联机能力

终极指南:IPXWrapper让Windows 11经典游戏重获联机能力 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 还在为那些陪伴你成长的经典游戏无法在现代Windows系统上联机而苦恼吗?IPXWrapper正是你需要的解决…...

极致轻松:5分钟掌握开源手绘白板的完整创作体验

极致轻松:5分钟掌握开源手绘白板的完整创作体验 【免费下载链接】excalidraw Virtual whiteboard for sketching hand-drawn like diagrams 项目地址: https://gitcode.com/GitHub_Trending/ex/excalidraw 你是否曾为寻找一个既美观又实用的绘图工具而烦恼&a…...

玩转 InternVL3.5 轻量级实战:从部署到优化的全记录

目录 InternVL3.5 1b部署到优化 环境依赖项: torch版本; 推理代码封装 结果: InternVL3.5 1b部署到优化 环境依赖项: pip install transformers==4.56.0pip install --upgrade timm --no-depstorch版本; 2.7.0 cuda 2.6.0 cuda 推理代码封装 from...

中小企业流程目标制定:三步找准适合你的发展节奏-佛山鼎策创局破局增长咨询

好多中小企业的老板还有管理者,在动手制定流程之际,常常容易陷入两种极端的情形。其一,他们会径直套用大公司那般复杂繁琐的体系,从而致使员工们怨声连连,工作积极性遭受极大打击,整个企业运营效率变得很低…...

STM32CubeMX新手避坑指南:从零配置STM32F407ZGT6的GPIO点灯(含Reset and Run设置)

STM32CubeMX实战避坑手册:从GPIO配置到稳定运行的完整解决方案 第一次打开STM32CubeMX时,那个五彩缤纷的引脚分配图确实让人眼前一亮——直到你按照教程生成了代码,编译通过,点击下载,然后...开发板毫无反应。这种挫败…...

LinkSwift:八大网盘直链下载助手终极指南 - 免费获取高速下载链接的完整教程

LinkSwift:八大网盘直链下载助手终极指南 - 免费获取高速下载链接的完整教程 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 …...