C++树(二)【直径,中心】

目录:

树的直径:

树的直径的性质: 

性质1:直径的端点一定是叶子节点                

性质2:任意点的最长链端点一定是直径端点。

性质3:如果一棵树有多条直径,那么它们必然相交,且有极长连续段(可以是一个点,交点为树的中心)

性质4:树T1的直径为x,y,树T2的直径为s,t。现有一边u,v与两颗树相连,新树的直径端点一点是x,y,s,t中的两个

树的直径求解方法:

树的直径的端点

树的中心

树的中心求解:

树的中心两个性质:

        证明:

公共点公共边的求法:

总结:

一、树的直径的四个基础性质

二、树的直径相关求解问题


树的直径:

定义:树的直径是树上两点间距离的最大值。即树中最远的两个节点之间的距离被称为树的直径,连接这两点的路径被称为树的最长链。

链1) 5- 7 - 8 -3

链2) 1- 4 - 7 - 8 - 3

直径为17

树的直径的性质: 

性质1:直径的端点一定是叶子节点                
        证明:假设直径s-t外存在一点p相连->s-t-p st+tp>st<sp   不成立
性质2:任意点的最长链端点一定是直径端点。
        证明:

性质3:如果一棵树有多条直径,那么它们必然相交,且有极长连续段(可以是一个点,交点为树的中心)
        证明:

性质4:树T1的直径为x,y,树T2的直径为s,t。现有一边u,v与两颗树相连,新树的直径端点一点是x,y,s,t中的两个

证明:

         性质4分析:

uv连接后有两种情况

1.新直径不过uv,即现直径为st或为xy。2.新直径过uv,则现直径为

max(vs,vt)+max(ux,uy)+uv。

这两种情况都能保证新直径端点为x,y,s,t中的任意两个。新直径为以上三个中最大值。

        连边uv求新树直径最小:
引理性质4可知:

st与xy不变,此时只能减下过uv的直径大小。以max(vs,vt)为例,要使该值最小,则v应当在树的中心位置,这样vs与vt越均衡。

同理u也应该在T2的树的中心位置。

        连边uv求新树直径最大:

与前面一致,以max(vs,vt)为例,要使得该值最大,则v应当选择直径端点位置。

因此uv选择各自直径的端点位置时,直径最大。

树的直径求解方法:

引理性质2:任意点的最长链端点一定是直径端点。

方法:随意找一个点x,进行dfs找到最长链的端点s,再以端点s做第二遍dfs,此时可以找到直径的第二个端点t。此时端点s到t的距离就是树的直径。

树的直径的端点

通过记录父亲节点的方式能够把直径上的所有点全部记录下来。

在树中,直径端点是常用点(假设端点为s,t),我们树上任意一点p所能到的最大距离,只有可能是到ps或pt

找到所有点到两个直径端点的距离方法

法一(朴素方法):

        求出直径端点后,以每个点为根做dfs,找到根节点到端点的距离。

        复杂度O(N2)。

法二(优化方法):

        第一次从任意点出发,必然能到达直径的一个端点s。

        第二次从s点进行dfs找到端点t,此时记录所有点到s的距离。

        第三次从t点进行dfs,记录所有点到t的距离。

        复杂度:O(n)

树的中心

概念:以树的中心为根时,从该根到每个叶子节点的最长路径最短,使得路径和平衡。

树的中心求解:

        我们现在已经知道求解任意一点到两端点的距离,即根据性质2可很轻松得到每个点能到的最长路径。求出每个点后的路径后,一次遍历便可知树的中心点。

树的中心两个性质:

性质1:树的中心一定在直径上,且趋向于中点位置

性质2:树的中心可以有一个(单中心),也可以有两个(双中心)

        证明:

引理性质2,若树的中心p不在直径st上,st上有一点q与直径联通。中心点能到的最远距离为:

max(qs,qt)+pq,若要使得该值最小,pq应当为0,因此p在直径上。

同时为了让max(qs,qt)更小,树的中心要在直径中点处。

直径公共点证明与求解方法

以当一颗树存在多条直径时,引理性质3,公共边一定连续,因此可以直接对公共点/边进行求解

公共点公共边的求法:

        找到直径左右端点s,t,从左往右遍历直径上的点进行

        dfs,如果某点r在直径外找到一点与到右端点t距离相同,点r右边的点一定不是公共点。

        同理,从右往左遍历直径上的点进行dfs,如果某点l在直径外找到一点与到左端点s距离相同,l左边的点一定不是公共点。此时,l->r就是我们直径的公共点。

        因此我们只需要找到公共点边界l,r即可。使得l尽可能靠右,r尽可能靠左。

总结:

一、树的直径的四个基础性质

性质1:直径的端点一定是叶子节点

性质2:任意点的最长链端点一定是直径端点

性质3:如果一棵树有多条直径,那么它们必然相交,且有极长连续段

性质4:两颗树加一条边相连,构成的新树直径端点一点是x,y,s,t中的两个

二、树的直径相关求解问题

1. 树的直径以及所有点到直径左右端点距离的解法。

2. 树的中心的含义以及求解方法。

3. 直径的公共点/边的求解方法。

4. 两颗树连边后求新树的最小/大直径方法。

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

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

相关文章

.NET MAUI开源架构_1.学习资源分享

最近需要开发Android的App&#xff0c;想预研下使用.NET开源架构.NET MAUI来开发App程序。因此网上搜索了下相关资料&#xff0c;现在把我查询的结果记录下&#xff0c;方便后面学习。 1.官方文档 1.1MAUI官方学习网站 .NET Multi-Platform App UI 文档 - .NET MAUI | Micro…

Python实战MySQL之数据库操作全流程详解

概要 MySQL是一种广泛使用的关系型数据库管理系统,Python可以通过多种方式与MySQL进行交互。本文将详细介绍如何使用Python操作MySQL数据库,包括安装必要的库、连接数据库、执行基本的CRUD(创建、读取、更新、删除)操作,并包含具体的示例代码,帮助全面掌握这一过程。 准…

CodeSouler:AI赋能,编程效率的革命性飞跃!

&#x1f525; 功能大揭秘&#xff0c;让你的代码飞起来&#xff01;&#x1f525; 01 添加代码注释 &#x1f4dd; 告别繁琐&#xff0c;一键添加精准注释&#xff01;提升代码清晰度&#xff0c;让后续维护不再是难题。 02 生成单元测试 &#x1f9ea; 智能分析&#xff0c;自…

C1W4.LAB.Vector manipulation+Hash functions and multiplanes

理论课&#xff1a;C1W4.Machine Translation and Document Search 文章目录 Python 中的矢量操作Transforming vectorsExample 1Example 2 Frobenius Norm Hash functions and multiplanesBasic Hash tablesPlanesHash Function with multiple planesRandom PlanesDocument v…

苹果x怎么录屏?手把手教你操作

随着社交媒体和视频平台的兴起&#xff0c;人们越来越习惯于通过视频来分享生活点滴、传播信息。苹果X手机凭借其出色的性能和高清屏幕&#xff0c;成为了许多用户录制屏幕视频的首选设备。可苹果x怎么录屏呢&#xff1f;本文将详细介绍苹果x手机的内置录屏方法&#xff0c;通过…

Blender使用(二)点线面基本操作

Blender使用之点线面 1.编辑模式 tab键进行切换&#xff0c;为了方便菜单调出&#xff0c;可以设置键位映射为拖动时的饼菜单。 设置好后&#xff0c;按住tab键移动鼠标(注意不要点击鼠标)&#xff0c;即可弹出编辑菜单。 默认是点模式&#xff0c;在左上角可进行点线面的切换…

【linux高级IO(三)】初识epoll

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux高级IO 1. 前言2. 初识e…

帕金森营养宝典,守护你的健康每一天!

&#x1f44b; 嗨&#xff0c;亲爱的小伙伴们&#xff01;今天我们来聊聊一个有点“严肃”但超级重要的话题——帕金森患者应该补充哪些营养&#xff1f;&#x1f914; &#x1f4aa; 首先&#xff0c;我们要知道&#xff0c;帕金森是一种常见的神经系统疾病&#xff0c;它可能…

自制一个指定容量缓存,并实现最近使用的最后删除

需求 实现一个缓存key-value结构&#xff0c;并设定容量最大值&#xff0c;当put进去的时候&#xff0c;如果超过最大容量&#xff0c;则将最早放进去的删除当get的时候&#xff0c;返回key值&#xff0c;并将key放到后面&#xff08;表示最近使用过&#xff0c;最后删除&…

mp3音乐剪辑软件大盘点,安利7款小白必备的免费mp3剪辑软件(详解)

mp3现在是最常见的音频格式&#xff0c;无处不在&#xff0c;包括下载音乐、播放播客、保存有声读物等等。因此&#xff0c;拥有一款强大的mp3音乐剪辑软件至关重要。使用mp3剪辑软件&#xff0c;你可以修剪、合并、压缩&#xff0c;甚至转换mp3为其他常见音频格式。所以&#…

openstack设置IP直接登录,不需要加dashboard后缀

openstack 实验环境&#xff0c;openstack-t版&#xff0c;centos2009 修改配置文件 [rootcontroller ~]# vim /WEBROOT /etc/openstack-dashboard/local_settings #将dashboard去掉 WEBROOT /dashboard/ #改为 WEBROOT /[rootcontroller ~]# vim /etc/httpd/conf.d/openst…

智能优化算法之禁忌搜索(Tabu Search, TS)

上图展示的是使用禁忌搜索算法解决电力系统孤岛问题。该问题旨在在发生严重扰动后将电力系统划分为几个不同的孤岛&#xff0c;目标是在将相关发电机放置在同一孤岛中并保持每个孤岛的连通性的同时&#xff0c;最小化所有孤岛的总发电负荷不平衡状态。 禁忌搜索&#xff08;Ta…

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

C++(week11): C++基础 第六章:关联式容器 set、map

文章目录 第六章&#xff1a;关联式容器1.set(1)set的特点(2)set的构造(3)set的查找操作 (set访问元素)(4)set的插入操作、pair(5)set的遍历 2.map(1)map的特点(2)map的构造(3)map的查找操作(4)map的插入操作(5)map的下标操作 &#xff08;重点&#xff09;(5)map的遍历 第六章…

入度与出度在数据结构中的应用

文章目录 应用案例1. 邻接矩阵2. 邻接链表3. 邻接集&#xff08;字典实现&#xff09;4. 入度列表&#xff08;基于邻接链表计算&#xff09; 特别补充3. 邻接集计算入度&#xff08;补充&#xff09;4. 邻接多重表&#xff08;概念介绍&#xff09; 入度和出度是图论中的概念&…

手机误删图片怎么办?2个照片恢复大师来帮忙,轻松找回

手机照片早已成为我们日常生活中的一部分&#xff0c;记录着欢笑、泪水等各种瞬间。但有时候&#xff0c;因为各种原因&#xff0c;它们会突然消失&#xff0c;让人痛心疾首。照片恢复有哪些方法呢&#xff1f;别急&#xff0c;今天就给大家带来2位照片恢复大师&#xff0c;它们…

【手写数据库内核组件】0501多线程并发模型,任务分发多工作者执行架构实现,多线程读写状态时volatile存储类型使用技巧

0501 多线程管理 ​专栏内容&#xff1a; postgresql使用入门基础手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 文章目录 0501 多…

[C++] 由浅入深理解面向对象思想的组成模块

文章目录 (一) 类的默认成员函数(二) 构造函数构造函数的特征构造函数示例无参构造带参构造 冲突:全缺省参数的构造函数与无参构造函数 &#xff08;三&#xff09;析构函数特性析构函数的析构过程解析 &#xff08;四&#xff09;拷贝构造函数什么是拷贝构造&#xff1f;特性为…

数据结构——单链表详解(超详细)(2)

前言&#xff1a; 上一篇文章小编简单的介绍了单链表的概念和一些函数的实现&#xff0c;不过为了保证文章的简洁&#xff0c;小编把它分成了两篇来写&#xff0c;这一篇小编紧接上一篇文章继续写单链表函数功能的实现&#xff1a; 目录&#xff1a; 1.单链表剩余函数的编写 1.…

MBR40150FCT-ASEMI无人机专用MBR40150FCT

编辑&#xff1a;ll MBR40150FCT-ASEMI无人机专用MBR40150FCT 型号&#xff1a;MBR40150FCT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;40A 最大循环峰值反向电压&#xff08;VRRM&a…