[蓝桥杯知识学习] 树链

news2025/2/22 17:13:37

DFS序

什么是DFS序

怎么求DFS序

进入操作,将有计数++

出:可以理解为,没有孩子可以去了(不能,向下行动:对应于程序里的入栈),所以回到父结点(向上行动,对应于程序里的出栈)

总体行动:

1. 进入结点,计数++,赋值:入=当前计数

2. 如果可以向下,则重复1操作

3. 如果没有可以向下的了,则,在当前结点:赋值出=当前计数,回到父结点,重复2操作

代码实现

我自己写的,更好懂

//多叉树
int inn[100000];  //dfs入序
int out[100000];   //dfs出序
int weight[100000];  //权重
vector<int> edge[100000];  //用来放结点的子结点
int cnt;  //dfs序计数器

//生成dfs序
void dfs(int t,int f)
{
  inn[t] = ++cnt;
  for(int i = 0 ; i < edge[t].size() ; i++)
  {
    dfs(edge[t][i],t);
  }
  out[t] = cnt;
  return ;
}

其实就是三段论

用一个数组 in 存放该结点的入序,遍历这个结点所有的子结点,用一个数组 out 放出序

DFS序的性质

1. 某些连续的入序对应树中的节点是一条链

2.某节点入序和出序之间对应的节点一定在其子树中

某结点的子树,其子树上的结点入序数都大于该结点,出序数都小于该结点。(这个好理解,要先进入这个结点,才能向下;向上的话,这个结点在最上方)

出序,一路退出,和最后进入的结点计数值相同

in[t] < t的子树的DFS序 < out[t]

例题

涉及到子树,所以用DFS序

解释,为什么第一个操作用的是 in[x] (某点的DFS序值),因为我们使用DFS序值当作数组下标,来记录点的点权,方便第二个操作的进行。

解释第二个操作:使用DFS序的第二个性质,in[x] 与 out[x] 之间是x子树结点的DFS序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1349811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我在CSDN的2023年

一、引言 在2023年的这一年当中&#xff0c;在CSDN的生活让我得到许多知识与启发&#xff0c;也让我获得一些快乐和成就 二、自己的收获 在这一年当中&#xff0c;我从一个只会看别人写的文章解决问题到&#xff0c;可以自己写文章帮别人解决问题&#xff0c;这种成就感是极大…

JavaScript history对象常用方法【通俗易懂】

✨前言✨   本篇文章主要在于了解及使用JavaScript中history对象常用方法 &#x1f352;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f352;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 文章目录 一&…

【熔断限流组件resilience4j和hystrix】

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容起因resilience4j落地实现pom.xml依赖application.yml配置接口使用 hystrix 落地实现pom.xml依赖启动类上添加注解接口上使用 &#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟…

thinkphp6入门(14)-- 多关联模型查询

背景&#xff1a; 有3个数据表&#xff0c;一个User表&#xff0c;一个Cloth表&#xff0c;一个Shoe表。 Cloth表和Shoe表分别和User表通过user_id关联。 thinkphp 6中如何通过模型查询所有用户&#xff0c;其中包括每个用户的cloth和shoe。 多关联模型查询&#xff1a; 1.…

热塑性塑料激光透光率检测仪

热塑性塑料是一类在一定温度下具有可塑性&#xff0c;冷却后固化且能重复这种过程的塑料。它们通常由线型高分子化合物组成&#xff0c;这些分子在受热时不会发生交联。热塑性塑料可以通过回收和再加工&#xff0c;重新制成新的产品。根据其性能特点、用途广泛性和成型技术通用…

YOLOv8改进 | 2023主干篇 | FasterNeT跑起来的主干网络( 提高FPS和检测效率)

一、本文介绍 本文给大家带来的改进机制是FasterNet网络&#xff0c;将其用来替换我们的特征提取网络&#xff0c;其旨在提高计算速度而不牺牲准确性&#xff0c;特别是在视觉任务中。它通过一种称为部分卷积&#xff08;PConv&#xff09;的新技术来减少冗余计算和内存访问。…

漏洞复现-海康威视网络对讲广播系统远程命令执行漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

策略模式示例,Lambda表达式

这样会有很多代码冗余 以上代码使用策略模式优化 优化方案1 那么现在可以这样 优化方案二 原先定义了接口,还需要一个个写实现类,其实完全没必要,用匿名内部类方式就可以 优化方案三:用lambda方式简写 优化方案四:不需要定义接口 使用Stream API

JavaScript中alert、prompt 和 confirm区别及使用【通俗易懂】

✨前言✨   本篇文章主要在于&#xff0c;让我们看几个与用户交互的函数&#xff1a;alert&#xff0c;prompt 和confirm的使用及区别 &#x1f352;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f352;博主将持续更新学习记录收获&…

【Shell编程练习】猜大小

系列文章目录 输出Hello World 通过位置变量创建 Linux 系统账户及密码 监控内存和磁盘容量&#xff0c;小于给定值时报警 系列文章目录脚本生成一个 100 以内的随机数,提示用户猜数字&#xff0c;根据用户的输入&#xff0c;提示用户猜对了&#xff0c;猜小了或猜大了&#x…

CMake入门教程【基础篇】CMake是什么?为什么学习CMake

文章目录 1.CMake简介2.为什么要学习CMake3.什么样的项目需要用CMake3.1大型或复杂项目3.2跨平台项目3.3需要高度定制化构建的项目3.4 研究和开源项目3.5小型或简单项目 4.CMake的作用5.支持的编译器5.1Windows平台5.2Unix/Linux平台5.3macOS平台5.4其他编译器5.5支持的平台 CM…

undefined reference to `pthread_create‘的另外一种解法

背景 编译带有thread的程序人&#xff0c;如果忘记-lpthread&#xff0c;那么就会报错 解决办法一&#xff1a;添加-lpthread 很简单添加-lpthread就行了 解决办法二&#xff1a;升级glibc 在高版本的glibc上&#xff0c;可能无需增加-lpthread Why glibc 2.34 removed li…

Web前端第9章思维导图

本章内容是关于CSS样式属性&#xff0c;包含CSS单位、CSS字体样式、CSS文本样式、CSS颜色与背景、CSS列表样式、CSS盒模型。重点在于CSS盒模型、CSS文本样式、CSS字体样式。 1. CSS单位 绝对单位 磅&#xff08;pt&#xff09;&#xff0c;pica&#xff08;pc&#xff09;、c…

HarmonyOS官网案例解析——保存应用数据

介绍 本篇Codelab将介绍如何使用基础组件Slider&#xff0c;通过拖动滑块调节应用内字体大小。要求完成以下功能&#xff1a; 实现两个页面的UX&#xff1a;主页面和字体大小调节页面。拖动滑块改变字体大小系数&#xff0c;列表页和调节页面字体大小同步变化。往右拖动滑块字体…

React学习计划-React16--React基础(八)react-redux使用与优化,纯函数介绍

笔记gitee地址 学习了 redux,为什么还要讲react-redux呢&#xff1f; redux不是专门为react所创建的,只不过在某一刻&#xff0c;react和redux看对眼了&#xff0c;所以俩人走到了一起&#xff0c;所以为了更好的支持redux,react官方出了react-redux来更好的支持redux 1. react…

向日葵远程工具的使用和MySQL安装与网络配置

文章目录 一、向日葵远程工具的使用二、MySQL安装与配置2.1MySQL简介&#xff1a;2.2MySQL5.7安装步骤 一、向日葵远程工具的使用 远程登录&#xff1a;向日葵可以帮助用户远程登录到其他计算机&#xff0c;无论它们在世界的哪个角落。这对于需要远程访问其他计算机的用户来说非…

如何去查看服务器的物理地址

1.打开控制面板&#xff0c;点击网络和共享中心 2.点击 以太网 3.点击详情信息 4.查看物理地址

动态规划:解决复杂问题的魔法武器

目录 &#x1f433;今日良言&#xff1a;天会晴&#xff0c;心会暖 &#x1f409;一、什么是动态规划 &#x1f409;二、如何使用动态规划 &#x1f409;三、典型例题 &#x1f433;今日良言&#xff1a;天会晴&#xff0c;心会暖 &#x1f409;一、什么是动态规划 动态规…

如何通过使用说明书的优化降低售后支持成本?

随着市场竞争的加剧&#xff0c;售后服务已成为企业保持竞争优势的关键因素之一。而使用说明书作为产品的重要组成部分&#xff0c;与售后服务之间存在着密切的关系。接下来就探讨一下如何通过优化使用说明书降低售后支持成本&#xff0c;提升售后服务质量。 一、使用说明书对售…

Valheim英灵神殿2456-2457-2458端口TCP和UDP开通

Valheim英灵神殿游戏需要开启云服务器2456、2457和2458三个端口&#xff0c;端口的TCP和UDP协议均要开通&#xff0c;云服务器吧yunfuwuqiba.com分享来详细说下Valheim英灵神殿游戏服务器端口说明&#xff1a; Valheim英灵神殿服务器端口 Valheim英灵神殿游戏要使用云服务器的…