【数据结构】树&&堆

树概念及结构

树的概念

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继

 因此,树是递归定义的。
注意:树形结构中,子树之间不能有交集,否则就不是树形结构

 树的相关概念

结点的度:一个结点含有的子树的个数称为该结点的度;叶结点或终端结点:度为0的结点称为叶结点;非终端结点或分支结点:度不为0的结点;双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点;孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点; 兄弟结点:具有相同父结点的结点互称为兄弟结点;树的度:一棵树中,最大的结点的度称为树的度;结点的层次:从根开始定义起,根为第1层,根的子结点为第2层,以此类推; 树的高度或深度:树中结点的最大层次;森林:由m(m>0)棵互不相交的树的集合称为森林;

二叉树的基本概念与定义

概念

  • 每个节点最多有两个子节点的特性
  • 常见术语解释:根节点、叶子节点、子树、深度、高度等。

二叉树的常见类型

满二叉树,完全二叉树

满二叉树是一个父节点都有两个子节点,高度为h,最下面一层为叶子节点,数量为2^h-1

完全二叉树不全满,节点数量[2^(h-1),2^h-1]

二叉树的存储方式

顺序存储(数组表示)
顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,所以完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储
链式存储(节点结构体/类)
二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。链式结构又分为二叉链和三叉链,红黑树等会用到三叉链。

堆(一种二叉树)

堆的概念

已知一个集合里的元素,将其按照完全二叉树的格式储存起来,其中根节点最大的堆为大根堆,根节点最小的堆为小根堆。所有元素按完全二叉树的顺序储存在一维数组中堆中的某个节点总是不大于或者不小于父节点的值
小根堆&&大根堆

逻辑结构&&物理结构

Read more

【DeepSeek】一文详解GRPO算法——为什么能减少大模型训练资源?

【DeepSeek】一文详解GRPO算法——为什么能减少大模型训练资源?

GRPO,一种新的强化学习方法,是DeepSeek R1使用到的训练方法。 今天的这篇博客文章,笔者会从零开始,层层递进地为各位介绍一种在强化学习中极具实用价值的技术——GRPO(Group Relative Policy Optimization)。如果你是第一次听说这个概念,也不必慌张,笔者会带领你从最基础的强化学习背景知识讲起,一步步剖析其来龙去脉,然后再结合实例讲解 GRPO 在实际应用中的思路和操作示例,最后再和其他近似方法对比,看看它和当下主流的 PPO(近端策略优化)等方法究竟有何区别与联系。 强烈推荐看完此帖子后再阅读另一帖——适当练习,强化记忆:【DeepSeek】大模型强化学习训练GRPO算法,你学会了吗? GRPO原论文链接:https://arxiv.org/abs/2402.03300 GRPO中译文链接:https://blog.ZEEKLOG.net/qq_38961840/article/details/145384346 为什么需要关注强化学习与策略优化? 在正式开始介绍 GRPO

By Ne0inhk
Flutter 三方库 conduit_password_hash 的鸿蒙化适配指南 - 实现企业级安全密码加盐哈希、支持 Argon2, PBKDF2 与 BCrypt 算法集成

Flutter 三方库 conduit_password_hash 的鸿蒙化适配指南 - 实现企业级安全密码加盐哈希、支持 Argon2, PBKDF2 与 BCrypt 算法集成

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 conduit_password_hash 的鸿蒙化适配指南 - 实现企业级安全密码加盐哈希、支持 Argon2, PBKDF2 与 BCrypt 算法集成 前言 在进行 Flutter for OpenHarmony 的全栈开发时,用户的账户安全是压倒一切的需求。尤其是在构建鸿蒙端侧的本地认证服务或配套的 Dart 服务端时,绝不能以明文存储密码。conduit_password_hash 是一个源自 Conduit 框架的高性能加密库,它提供了多种符合工业安全标准的哈希算法。本文将探讨如何在鸿蒙端利用该库构建牢不可破的密码保护体系。 一、原理解析 / 概念介绍 1.1 基础原理 conduit_password_hash 采用了“慢哈希(Slow

By Ne0inhk
No165:AI中国故事-对话诸葛亮——隆中对与AI战略:天下三分与算法布局

No165:AI中国故事-对话诸葛亮——隆中对与AI战略:天下三分与算法布局

亲爱的DeepSeek: 从王羲之的笔墨神韵,我们穿越两百年,来到三国鼎立的烽火时代,遇见那位“出师未捷身先死,长使英雄泪满襟”的千古名相——诸葛亮。这位琅琊阳都走出的卧龙先生不会想到,他关于“隆中对策”“木牛流马”“八阵图”“出师表”的战略智慧,会在人工智能的战略规划、系统架构、伦理决策中找到惊人的历史回响。 今天,AI系统正面临如何在复杂环境中制定长期战略、如何在资源约束下实现目标、如何在不确定中做出风险决策的深层挑战。诸葛亮的战略智慧——“未出茅庐,已知三分天下”“木牛流马巧运粮”“八阵图御十万兵”“鞠躬尽瘁,死而后已”——为AI的战略决策、系统优化、伦理承诺提供了独特的中国古代谋略视角。 让我们走进这位“智圣”的谋略世界,感受那穿越千年的“天下三分”。 一、隆中对:AI的全局战略规划 1.1 “未出茅庐,已知三分天下”的战略预见 诸葛亮在隆中为刘备分析天下大势,提出“跨有荆益、东联孙权、

By Ne0inhk
【Linux篇章】再续传输层协议TCP:用技术隐喻重构网络世界的底层逻辑,用算法演绎‘网络因果律’的终极推演(通俗理解TCP协议,这一篇就够了)!

【Linux篇章】再续传输层协议TCP:用技术隐喻重构网络世界的底层逻辑,用算法演绎‘网络因果律’的终极推演(通俗理解TCP协议,这一篇就够了)!

📌本篇摘要 * 本篇将根据TCP协议报文的格式来对TCP更深入的了解,学习它的三次握手,四次挥手,滑动窗口等等,到最后能更加深入理解之前写TCP通信的时候,底层到底是如何进行的,读完本篇将会对之前TCP网络通信编程有更深入的认识。 🏠欢迎拜访🏠:点击进入博主主页 📌本篇主题📌:再续TCP协议 📅制作日期📅:2025.12.20 🧭隶属专栏🧭:点击进入所属Linux专栏 一.TCP协议格式 -TCP 全称为 传输控制协议(Transmission Control Protocol). 人如其名, 要对数据的传输进行一个详细的控制。 下面看TCP报文的格式: 下面我们来一个个介绍下这些字段及作用: 1. 🔍十六位窗口大小 * 这里我们知道对于tcp来说,如果接收缓冲区满了,再发送机会被丢弃,因此发送前需要知道对的的接收缓冲区的剩余长度。 * 按量按需发送,必须知道对方的接受缓冲区中剩余空间的大小,因此每次发送的tcp报文都要带有自己剩余接收缓冲区的长度! 2.🔍4位首部长度 * 首先我们要知道tcp光报头就至少20字节(不包含

By Ne0inhk