数据结构【树和二叉树】
树和二叉树
- 前言
- 1.树
- 1.1树的概念和结构
- 1.2树的相关术语
- 1.3树的表示方法
- 1.4 树形结构实际运用场景
- 2.二叉树
- 2.1二叉树的概念和结构
- 2.2二叉树具备以下特点:
- 2.3二叉树分类
- 3.满二叉树
- 4.完全二叉树
- 5.二叉树性质
- 6.附:树和二叉树图示
前言
欢迎莅临姜行运主页
https://blog.csdn.net/2401_84320036?type=blog
欢迎指导本人数据结构专栏(https://blog.csdn.net/2401_84320036/category_12950167.html)
1.树
1.1树的概念和结构
定义:树是一种非线性的数据结构,它是由 n(n>=0)个有限结点组成⼀个具有层次关系的集合。为什么叫树,因为它看起来像一棵倒挂的树。
- 有一个特殊的结点,称为根结点,根结点没有前驱结点。
- 除了根结点外,每个结点有且仅有一个父结点。
- 子树不相交。
- 一棵N个结点的树有N-1条边。
1.2树的相关术语
父结点/双亲结点:若一个结点含有子结点,则这个结点称为其子结点的父结点。
子结点/孩子结点:一个结点含有的子树的根结点称为该结点的子结点; 如上图:B是A的孩⼦结点
结点的度:一个结点有几个孩子,他的度就是多少。
树的度:一棵树中,最大的结点的度称为树的度。
叶子结点/终端结点:度为 0 的结点称为叶结点。
分支结点/非终端结点:度不为 0 的结点。
兄弟结点:具有相同父结点的结点互称为兄弟结点(亲兄弟)。
结点的层次:从根开始定义起,根为第 1 层,根的子结点为第 2 层,以此类推;
树的高度或深度:树中结点的最大层次。
结点的祖先:从根到该结点所经分支上的所有结点。
路径:⼀条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。
子孙:以某结点为根的子树中任一结点都称为该结点的子孙。
森林:由 m(m>0)棵互不相交的树的集合称为森林.
1.3树的表示方法
struct TreeNode
{struct Node* child; // 左边开始的第⼀个孩⼦结点struct Node* brother; // 指向其右边的下⼀个兄弟结点int data; // 结点中的数据域
};
1.4 树形结构实际运用场景
文件系统是计算机存储和管理文件的⼀种方式,它利用树形结构来组织和管理文件和文件夹。在文件系统中,树结构被广泛应用,它通过父结点和子结点之间的关系来表示不同层级的文件和文件夹之间的关联。
2.二叉树
2.1二叉树的概念和结构
在树形结构中,常用的就是二叉树,⼀棵二叉树是结点的⼀个有限集合,该集合由(⼀个根结点加上两棵别称为左子树和右用树的二叉树组成)或者为(空)。
2.2二叉树具备以下特点:
- 二叉树不存在度大于 2 的结点。
- 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树。
注意:对于任意的二叉树都是由以下几种情况复合而成的
2.3二叉树分类
- 满二叉树
- 完全二叉树
3.满二叉树
一个二叉树,如果每一层的结点数都达到最大值,则这个二叉树就是满二叉树。
如果⼀
个⼆叉树的层数为 K ,且结点总数是
,则它就是满二叉树。
等比数列计算,从二的指数从零到一计算。
4.完全二叉树
除了最后一层,其他每层的结点个数都达到最大,最后一层结点个数不一定最大,最后一次的结点按照顺序由左到右依次排列。
5.二叉树性质
根据满二叉树的特点可知:
6.附:树和二叉树图示
相关文章:
数据结构【树和二叉树】
树和二叉树 前言1.树1.1树的概念和结构1.2树的相关术语1.3树的表示方法1.4 树形结构实际运用场景 2.二叉树2.1二叉树的概念和结构2.2二叉树具备以下特点:2.3二叉树分类 3.满二叉树4.完全二叉树5.二叉树性质6.附:树和二叉树图示 前言 欢迎莅临姜行运主页…...
.NET代码保护混淆和软件许可系统——Eziriz .NET Reactor 7
.NET代码保护混淆和软件许可系统——Eziriz .NET Reactor 7 1、简介2、功能特点3、知识产权保护功能4、强大的许可系统5、软件开发工具包6、部署方式7、下载 1、简介 .NET Reactor是用于为.NET Framework编写的软件的功能强大的代码保护和软件许可系统,并且支持生成…...
运维打铁:Centos 7使用yum安装 Redis 5
文章目录 一、安装前信息说明二、安装 Redis三、创建 Redis 相关数据目录四、启动 Redis 服务五、修改 Redis 数据目录和端口1. 修改 Redis 配置文件 /etc/redis.conf2. 拷贝数据到数据目录并授权3. 重启 Redis 并连接访问 六、常见问题及解决办法1. Redis 安装失败2. Redis 服…...
【蓝桥杯】可分解的正整数
可分解的正整数 定义一种特殊的整数序列,这种序列由连续递增的整数组成,并满足以下条件: 序列长度至少为 3。序列中的数字是连续递增的整数(即相邻元素之差为 1),可以包括正整数、负整数或 0。 例如&…...
长城杯铁人三项初赛-REVERSE复现
前言 记录记录 1.LoginToMe int __fastcall main(int argc, const char **argv, const char **envp) {unsigned int v3; // eaxchar s[96]; // [rsp10h] [rbp-70h] BYREFint v6; // [rsp70h] [rbp-10h]int v7; // [rsp78h] [rbp-8h]int i; // [rsp7Ch] [rbp-4h]memset(s, 0, s…...
与终端同居日记:Shell交响曲の终极共舞指南
前言: 《与终端同居日记》特别篇:当文件们开始叠罗汉 亲爱的压缩包驯兽师: 欢迎来到「文件马戏团」!在这里,zip是那个强迫症整理狂,tar是爱玩俄罗斯套娃的魔法师,而gzip——绝对是偷偷给文件喝…...
学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、ShaderPass渲染通道),案例一
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.EffectComposer 后期…...
【AI 加持下的 Python 编程实战 2_10】DIY 拓展:从扫雷小游戏开发再探问题分解与 AI 代码调试能力(中)
文章目录 DIY 实战:从扫雷小游戏开发再探问题分解能力3 问题分解实战(自顶向下)3.2 页面渲染逻辑3.3 事件绑定逻辑 4 代码实现(自底向上)4.1 页面渲染部分4.2 事件绑定部分 写在前面 本篇将利用《Learn AI-assisted Py…...
【数据可视化-27】全球网络安全威胁数据可视化分析(2015-2024)
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
Cephalon端脑云:神经形态计算+边缘AI·重定义云端算力
前引:当算力不再是“奢侈品” ,在人工智能、3D渲染、科学计算等领域,算力一直是横亘在个人与企业面前的“高墙”。高性能服务器价格动辄数十万元,专业设备维护成本高,普通人大多是望而却步。然而,Cephalon算…...
CSS简单实用的加载动画、骨架屏有效果图
效果图 .wxml <!-- 骨架屏 --> <view wx:for"{{skeleton}}" wx:key"index" class"container center" style"--w:{{item.w}}rpx;--h:{{item.h}}rpx" /> <!-- 加载 --> <view class"arco-loading center&quo…...
图论算法体系:并查集、生成树、排序与路径搜索全解析
从图论的基础理论入门,到深搜广搜搭建起图论的骨架。 从并查集到最小生成树,从拓扑排序到最短路径。 .... 群星璀璨😉 并查集最小生成树 Prim算法Kruskal算法 拓扑排序(kahn算法)最短路径 Dijkstra算法 Dijkstra朴素Di…...
OpenAI为何觊觎Chrome?AI时代浏览器争夺战背后的深层逻辑
目录 引言:一场蓄谋已久的"蛇吞象"计划 一、Chrome:数字世界的"黄金入口" 1.1 用户规模对比:ChatGPT与Chrome的悬殊差距 1.2 Chrome的生态价值远超浏览器本身 二、OpenAI的"入口焦虑"与战略布局 2.1 AI时…...
DrissionPage 请求一次换一个代理(不重启chrome)
实现原理:通过插件实现 # !/usr/bin/python3 # -*- coding:utf-8 -*- """ author: JHC000abcgmail.com file: switch_ip.py time: 2025/4/23 22:05 desc:"""R""" 1. chrome s商店下载Proxy SwitchyOmega 3 (ZeroOme…...
JBoltAI 赋能金融文档:基于 RAG 的基金招募说明书视觉增强方案
在金融领域,基金招募说明书是投资者了解基金产品关键信息的重要文件。然而,这类文件通常以 PDF 格式呈现,内容繁杂、文本枯燥,对于普通投资者而言,理解起来存在一定难度。而如何利用 AI 技术对这类枯燥文本进行视觉增强…...
【玩转全栈】—— Django+vue3+讯飞星火API 实现前端页面实时AI答复
技术栈:vue3 element-plus axios pinia router Django5 websocket 讯飞星火API 本文将实现一个 AI 聊天对话功能,将前端用户输入问题以及之前对话发送给后端,通过 api 访问大模型,返回前端实时对话数据。 调用 讯飞星火API…...
1.1 java开发的准备工作(入门)
准备工作 一.JDK 开始写java程序之前需要安装jdk jdk是java开发工具,包含着JRE和里面的JVM(虚拟机,可以使得不同环境下都能运行Java程序),和开发工具。 二.了解写程序的三大步骤步骤 java成功运行主要需要经过代码编写,编译&a…...
socket编程基础
上一篇 --- 网络基础概念(下)https://blog.csdn.net/Small_entreprene/article/details/147320155?fromshareblogdetail&sharetypeblogdetail&sharerId147320155&sharereferPC&sharesourceSmall_entreprene&sharefromfrom_link 理…...
根据定义给出json_schema:
根据您提供的智能体定义,以下是符合JSON Schema Draft-07规范的完整架构描述(包含中文注释说明): {"$schema": ""title": "智能体架构规范","type": "object","req…...
深入微服务核心:从架构设计到规模化
作者:腾讯云开发者 原文:深入微服务核心:从架构设计到规模化 01 微服务 什么是微服务? 微服务就是一些协同工作的小而自治的服务。我们在一个单体系统中,通常会采用一些抽象层或者模块来保证代码的内聚性,…...
linux与c语言基础知识(未全部完成)
文章很多处理论,没办法写出来,(linux的一些理论问题,我有时间后,会逐个解决) 文章大多数的理论来字这个链接, C语言快速入门-C语言基础知识-CSDN博客 一. linux(Ubuntu) …...
【专题刷题】滑动窗口(四):
📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;ÿ…...
小白自学python第一天
学习python的第一天 一、常用的值类型(先来粗略认识一下~) 类型说明数字(number)包含整型(int)、浮点型(float)、复数(complex)、布尔(boolean&…...
Redis 服务自动开启、设置密码和闪退问题
一、Redis 服务自动开启 1、以管理员身份运行命令提示符 右键点击“命令提示符”图标,选择“以管理员身份运行”。 2、注册为 Windows 服务 redis-server --service-install 3、启动服务 redis-server --service-start 4、测试 Redis 连接 redis-cli ping …...
2025年渗透测试面试题总结-拷打题库14(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库14 1. WAF存在的意义 2. 威胁感知能力衡量指标 3. 感知规则有效性…...
java后端开发day35--集合进阶(四)--双列集合:MapHashMapTreeMap
(以下内容全部来自上述课程) 1.双列集合 1.1 特点 双列集合一次需要存一对数据,分别为键和值键不能重复,值可以重复键和值是一一对应的,每一个键只能找到自己对应的值键值这个整体,我们称之为“键值对”…...
进行网页开发时,怎样把function()中变量值在控制台输出,查看?
在网页开发过程中,为了及时了解JavaScript中的function函数中的变量值,可以用控制台命令console.log()把变量的值在控制台输出,方便调试时对函数变量值进行了解。 看下面的一段示例: <!DOCTYPE html> <html> &l…...
【计算机网络】现代网络技术核心架构与实战解析
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:TCP服务端/客户端通信案例2:Wireshark抓包分析 三、性能对比测试方法…...
Python内置函数---bool()
用于将任意对象转换为布尔值(True或False) 1. 基本语法与参数 bool(x) - 参数:x为可选参数,可以是任意Python对象(如数值、字符串、列表、自定义对象等)。 - 返回值:根据x的真值性返回True或Fa…...
Vue 3中如何封装API请求:提升开发效率的最佳实践
在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时。随着Vue 3的广泛应用,如何高效地封装API请求,既能提升代码的可维护性,又能确保代码的高复用性,成为了很多开发者关注的话题。 在本文中&…...
【Redis】redis主从哨兵
Redis 主从复制 在访问量极高的场景下,单台 Redis 已难以承载所有请求,且单点故障风险高。通过主从复制,可以实现读写分离、数据备份与高可用。 概念 主节点(Master):负责写操作,将数据变更同…...
16.第二阶段x64游戏实战-分析二叉树结构
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:15.第二阶段x64游戏实战-分析怪物血量(遍历周围) 首先通…...
vue | 不同 vue 版本对复杂泛型的支持情况 · vue3.2 VS vue3.5
省流总结:defineProps 的泛型能力,来直接推导第三方组件的 props 类型 引入第三方库的类型,并直接在 <script setup> 中作为 props 使用。这种类型一般是复杂泛型(包含联合类型、可选属性、交叉类型、条件类型等࿰…...
OpenGL学习笔记(Blinn-Phong、伽马矫正、阴影)
目录 Blinn-PhongGamma矫正GammaGamma矫正实现方法sRGB纹理衰减 阴影shadow mapping渲染阴影改进阴影贴图PCF GitHub主页:https://github.com/sdpyy1 OpenGL学习仓库:https://github.com/sdpyy1/CppLearn/tree/main/OpenGLtree/main/OpenGL):https://github.com/sdp…...
GPLT-2025年第十届团体程序设计天梯赛总决赛题解(2025天梯赛题解,266分)
今天偶然发现天梯赛的代码还保存着,于是决定写下这篇题解,也算是复盘一下了 L1本来是打算写的稳妥点,最后在L1-6又想省时间,又忘记了insert,replace这些方法怎么用,也不想花时间写一个文件测试,…...
day4 pandas学习
%pip install openxyxl 找一个自己觉得有意思的文件。我找的是成绩单来玩。 这节学的比较耗时了,大概用了60分钟。 import pandas as pd data2 pd.read_csv(rD:\python代码区\代码随想录挑战-调试区\python训练营\1_计算类专业分流学生成绩排名.csv) #print(data)…...
【Java学习笔记】循环结构
循环结构 一、for循环 for循环结构 for(循环变量初始化;循环条件;循环变量迭代){循环操作(可以多条语句) }for循环写死循环 for(;;){语句 }注意点:循环变量的初始化在for语句内,属于是局部变量,在全局中会出现未定义…...
URP-UGUI交互功能实现
一、非代码层面实现交互(SetActive) Button :在OnClick()中添加SetActive方法(但是此时只首次有效) Toggle :在OnClick()中添加动态的SetActive方法 &#…...
08-IDEA企业开发工具-集成AI插件通义灵码
需要登陆才可使用!!! 1. 安装AI编程插件 找到插件: 在IDEA的设置中,找到插件(Plugins)部分。安装插件: 搜索“通义灵码”,找到后点击安装(Install),接受条款…...
解决报错:this[kHandle] = new _Hash(algorithm, xofLen);
前端项目编译报错: node:internal/crypto/hash:68this[kHandle] new _Hash(algorithm, xofLen);^Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:68:19)at Object.createHash (node:crypto:138:10)at modu…...
使用 Streamlit 打造一个简单的照片墙应用
在现代 web 开发中,快速构建交互式应用是一项重要的技能。Streamlit 是一个强大的 Python 库,允许开发者以最小的代码量创建美观且功能丰富的 web 应用。今天,我们将通过分析一段简单的 Streamlit 代码,展示如何构建一个照片墙应用…...
深度学习优化器和调度器的选择和推荐
一、常用优化器对比 1. 随机梯度下降(SGD) 原理:每次迭代使用小批量数据计算梯度并更新参数。优点:实现简单,适合大规模数据集。缺点:收敛速度慢,容易陷入局部最优或鞍点。适用场景࿱…...
“时间”,在数据处理中的真身——弼马温一般『无所不能』(DeepSeek)
电子表格时间处理真理:数值存储最瘦身,真身闯关通四海。 笔记模板由python脚本于2025-04-23 22:25:59创建,本篇笔记适合喜欢在电子表格中探求时间格式的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验…...
为什么Spring中@Bean注解默认创建单例Bean
在Spring框架中,使用Bean注解定义的对象默认确实是单例的,这是由Spring容器的设计哲学和实际需求决定的。下面我从多个角度解释这一设计选择的原因和机制。 1. Spring Bean作用域基础 Spring定义了多种Bean作用域,其中默认是单例(Singleton…...
GPLT-2025年第十届团体程序设计天梯赛总决赛题解(2025天梯赛题解,共计266分)
今天偶然发现天梯赛的代码还保存着,于是决定写下这篇题解,也算是复盘一下了 L1本来是打算写的稳妥点,最后在L1-6又想省时间,又忘记了insert,replace这些方法怎么用,也不想花时间写一个文件测试,…...
JDK(Ubuntu 18.04.6 LTS)安装笔记
一、前言 本文与【MySQL 8(Ubuntu 18.04.6 LTS)安装笔记】同批次:先搭建数据库,再安装JDK,后面肯定就是部署Web应用:典型的单机部署。“麻雀虽小五脏俱全”,善始善终,还是记下来吧。…...
Java 拦截器完全指南:原理、实战与最佳实践
一、引言 拦截器的基本概念 在现代 Java Web 开发中,拦截器(Interceptor)是一种用于在请求处理前后插入自定义逻辑的机制。简单来说,它是一种“横切逻辑处理器”,可以用来对请求进行预处理、后处理,甚至终…...
2025.04.23华为机考第二题-200分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 魔法彩灯森林 问题描述 在卢小姐的魔法花园中,有一棵神奇的彩灯树。这棵树的每个节点都装有一盏魔法灯,灯有三种颜色状态:红色(用数字1表示)、绿色(用数字2表示)和蓝色(…...
【Leetcode 每日一题】1399. 统计最大组的数目
问题背景 给你一个整数 n n n。请你先求出从 1 1 1 到 n n n 的每个整数 10 10 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。 请你统计每个组中的数字数目,并返回数字数目并列最多的组…...
系统重装——联想sharkbay主板电脑
上周给一台老电脑重装系统系统,型号是lenovo sharkbay主板的电脑,趁着最近固态便宜,入手了两块长城的固态,装上以后插上启动U盘,死活进不去boot系统。提示 bootmgr 缺失,上网查了许久,终于解决了…...