数据结构 树的直径

15 篇文章 1 订阅
订阅专栏

在这里插入图片描述

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

学习日记

目录

学习日记

一、定义

二、两次DFS

定理:

反证法证明:

1、若y在d(t,s)上

 2、若y不在d(s,t)上,且d(y,z)与d(s.t)存在重合路径:

3、 若y不在d(s,t)上,且d(y,z)与d(s,t)不存在重合路径:​编辑

三、树形DP

状态表示 


一、定义

        树的直径,又称树的最长链。我们将一棵树 T = {V, E} 的直径定义为max(u,v), 也就是说,树中所有最短路径距离的最大值即为树的直径。

        显然,一棵树可以有多条直径,他们的长度相等。 可以用两次 DFS 或者树形 DP 的方法在

O(n) 时间求出树的直径。

二、两次DFS

        首先从任意节点x开始进行第一次 DFS,到达距离其最远的节点,记为y,然后再从y开始做第二次 DFS,到达距离y最远的节点,记为,则即d(y,z)为树的直径。 显然,如果第一次 DFS 到达的节点y是直径的一端,那么第二次 DFS 到达的节点 一定是直径的一端。我 们只需证明在任意情况下, 必为直径的一端。

定理:

在一棵树上,从任意节点开始进行一次 DFS,到达的距离其最远的节点必为直径的一端。

反证法证明:

        记出发点记出发节点为y。设真实的直径是d(s,t),而从y进行的第一次 DFS 到达的距离其 最远的节点z不为t或x。共分三种情况:

1、若y在d(t,s)上

有d(y,z)>d(s,t),则d(x,z)>d(x,t),得d(s,z)>d(s,t),与 d(s,t) 为树的直径矛盾。

 2、若y不在d(s,t)上,且d(y,z)与d(s.t)存在重合路径:

 有d(y,z)>d(s,t),则d(x,z)>d(x,t),得d(s,z)>d(s,t),与d(s,t)为树的直径矛盾。

3、 若y不在d(s,t)上,且d(y,z)与d(s,t)不存在重合路径:

有d(y,z)>d(s,t),则d(x',z)>d(x',t),d(x,z)>d(x,t),得d(s,z)>d(s,t),与d(s,t)为树的直径矛盾。

        综上,三种情况下假设均会产生矛盾,故原定理得证。上述证明过程建立在所有路径均不为负的前提下。如树上存在负权边,则上述证明不成立。故如果存在负权边,则无法使用两次 DFS 的方式求解直径。

int maxdis,maxu; 
void dfs(int u,int fa,int dis) 
{ 
    if(maxdis < dis) maxdis = dis , maxu = u; 
    for(int i = h[u] ; ~i ; i = ne[i]) 
    { 
        int j = e[i]; 
        if(j == fa) continue;
        dfs(j,u,dis+w[i]); 
    } 
}
dfs(1,-1,0); dfs(maxu,-1,0);

三、树形DP

        记录当1为树的根时,每个节点作为子树的根向下,所能延伸的最远距离d1,和次远距离d2 ,那么直径就是所有d1+d2的最大值。树形 DP 可以在存在负权边的情况下求解出树的直径。

状态表示 

f1[i]表示以i为根的子树中,i到叶子结点距离的最大值。
f2[i]表示以i为根的子树中,i到叶子结点距离的次大值。
int f1[N],f2[N]; 
int ans;
void dfs(int u,int fa) 
{ 
    f1[u] = f2[u] = 0;
    for(int i = h[u] ; ~i ; i = ne[i]) 
    { 
        int j = e[i];
        if(j == fa) continue;
        dfs(j,u); if(f1[j]+w[i] > f1[u]) f2[u] = f1[u] , f1[u] = f1[j]+w[i]; 
        else if(f1[j] + w[i] > f2[u]) f2[u] = f1[j] + w[i]; 
    }
    ans = max(ans,f1[u]+f2[u]); 
}
dfs(1,-1);

 

数据结构直径问题
wukk5201315的专栏
05-18 4240
直径是指的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为直径; 原理: 设起点为u,第一次BFS找到的终点v一定是直径的一个端点 证明: 1) 如果u 是直径上的点,则v显然是直径的终点(因为如果v不是的话,则必定存在另
light oj 1257 直径
努力奋斗才能梦想成真
08-11 1925
以前写过一个证明,直接贴过来吧 主要是利用了反证法: 假设 s-t这条路径为直径,或者称为上的最长路 现有结论,从任意一点u出发搜到的最远的点一定是s、t中的一点,然后在从这个最远点开始搜,就可以搜到另一个最长路的端点,即用两遍广搜就可以找出的最长路 证明: 1    设u为s-t路径上的一点,结论显然成立,否则设搜到的最远点为T则 dis(u,T)
数据结构直径
COCO56的博客
02-01 925
定义 结点的度:一个结点含有的子结点的个数称为该结点的度; 叶结点:又称终端结点,指度为0的结点,即该节点没有子节点; 直径直径上距离最远的两点间的距离。 ...
数据结构专题 )【 直径
石旭先森的博客
04-07 680
数据结构专题 )【 直径 】 定义:我们将一棵T = ( V,E )的直径定义为max( u,v )( u,v ∈ V ),也就是说,中所有最短路径距离的最大值即为直径。 怎么求直径呢? 1、两次bfs(或者dfs) 方法:先从任意一点P出发,找离它最远的点Q,再从点Q出发,找离它最远的点W,W到Q的距离就是是的直径。( 记住就好了 ) 例题:http:...
直径总结
ZhuRanCheng的博客
03-20 765
直径总结
NOIP 信息学奥赛 数据结构
09-08
本课件聚焦于“”这一核心数据结构,对于参赛者来说,理解和掌握的性质、操作以及应用是必备技能。 是一种非线性的数据结构,它由若干个节点(或称为顶点)和边组成,每个节点可能有零个或多个子节点,除了一...
算法-形结构- 与二叉- 直径.rar
09-16
在计算机科学领域,形结构是一种非常重要的数据结构,它被广泛应用于算法设计和问题解决。与二叉形结构中的两种基本类型,它们在搜索、排序、图论以及许多其他计算任务中发挥着核心作用。"直径"是形...
挑战程序设计竞赛(算法数据结构)——15.4直径的JAVA实现
小乖乖的臭坏坏
12-30 367
题目&思路: 代码: import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Scanner; public class TreeDiameter { static class Edge{ public int t, w; Edge(){} Edge(int t, int w){ this.t = t;
直径
在AC与WA间徘徊
05-21 505
  给定一棵中每条边都有一个权值,中两点之间的距离定义为连接两点的路径上的边权之和。中最远的两个节点之间的距离被称为直径。连接这两点的路径被称为的最长链。   练手模板题:http://www.joyoi.cn/problem/tyvj-1520   直径有两种求法,时间复杂度都是O(N).我们假设以N个点N-1条边的无向图的形式给出,并存储在图中。 void ...
直径
一只不争气的蒸汽机的博客
05-20 686
的路径可以两次bfs或者dfs,求法和证明如下: 求法:从任意一点u先做一次bfs/dfs找到最远的一点y,在从y做一次bfs/dfs找到最远的距离,而这个距离就是直径了。 证明:直接引用的这位大哥的了。 假设s-t这条路径为直径,或者称为上的最长路   现有结论,从任意一点u出发搜到的最远的点一定是s、t中的一点,然后再从这个最远点开始搜,就可以搜到另一个最长路的端点,即...
5433: 数据结构实验:二叉直径
qq_40605429的博客
06-04 1005
5433: 数据结构实验:二叉直径时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte总提交:60           测试通过:21描述求一棵二叉直径,即任意两个结点之间的路径长度最大值,路径可以经过根结点,父子节点之间的路径长度定义为1。二叉节点定义如下:struct TreeNode {    int val;    struct Tree...
直径模板
东隅已逝,桑榆非晚~Loi_MurasameKatana
10-11 872
直径模板http://codevs.cn/problem/1814/最长链.模板题 对于上的最长链,有且仅有两种情况: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; int n,tot,a,b,ans,pos; in
数据结构——二叉直径
K.Sun
11-26 5269
原文地址:Diameter of a Binary Tree直径(有时也称作宽度),指的是中的两个叶子节点之间最长路径的节点的数目,下面的图显示了两个直径都是9,形成最长路径的两个端点的叶子节点被加上了阴影(注意每个中长度为9的路径不止一个,但是没有比9再更长的路径了)。 一个T的直径是下面几条里面最长的: T的左子直径 T的右子直径 两个叶子之间穿过T的根的最长路径(这
NOIP2007 网的核 [dfs] [数据结构] [直径]
C'est la vie.
09-02 904
网的核 (core.pas/c/cpp) 【问题描述】 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根),每条边到有正整数的权,我们称T为网(treebetwork),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并设T有n个结点。 路径:网中任何两结点a,b都存在唯一的一条简单路径,用d(a, b)表示以a, b为端点的路径的长度,它是该路径上各边长度之和
数据结构作业:二叉直径与图遍历算法
"西南交通大学数据结构作业" 本次作业涵盖了数据结构中的关键概念,主要涉及二叉和图的处理。以下是各个部分的知识点详解: 一、二叉 1. **二叉直径**:二叉直径中任意两个节点之间的最长路径,这...
写文章

热门文章

  • Python头歌合集(题集附解) 169047
  • C语言程序设计·头歌实训合集 96366
  • 梯度下降算法(Gradient descent) 26560
  • Python selenium基础用法详解 23294
  • Python操作lxml库(基础篇) 19069

分类专栏

  • Python 38篇
  • 机器学习 4篇
  • c语言 26篇
  • 计算机图形学 1篇
  • 杂谈 2篇
  • 人工智能 7篇
  • 计算机组成原理 7篇
  • 数据结构 15篇
  • 离散数学 7篇

最新评论

  • 遗传算法解决TSP旅行商问题(numpy、pandas)

    虚幻230: 写得很清晰,一看就懂

  • C语言程序设计·头歌实训合集

    2301_80365133: 一维数组第三关有问题

  • 遗传算法解决TSP旅行商问题(numpy、pandas)

    oshh811: pandas是不是没用上?

  • C语言程序设计·头歌实训合集

    2401_84924760: YYDS

  • C语言程序设计·头歌实训合集

    xljbxsh: c语言学费计算

最新文章

  • 数据可视化技术头歌测试合集
  • 机器学习与模式处理头歌实训
  • 计算机图形学头歌合集(题集附解)
2024年1篇
2023年18篇
2022年82篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉蕤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王大邑有效的网站优化台州网站建设优化排名广东网站竞价优化效果怎样丽水网站优化有哪些优化网站服务项目网站搜索优化哪家合适吉林市网站关键词优化长春网站建设SEO优化营销福山视频网站优化公司成都网站排名优化软件惠州网站优化推广定制临江网站自然优化上饶网络推广网站优化东方seo网站优化哈尔滨有能做网站优化网站优化周期临海网站快速优化佛山seo网站排名优化软件怀柔专业的网站优化楚雄网站优化方法玄武区网站优化与推广正定网站关键词优化哪家好网站优化什么意思海外网站优化惠州seo网站优化云浮外贸网站关键词优化费用普兰店企业网站优化服务阳江专业网站优化费用多少有效的网站优化网站空间选择优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化