博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树的直径
阅读量:4510 次
发布时间:2019-06-08

本文共 822 字,大约阅读时间需要 2 分钟。

定义:

对于一棵树,找到树上的两个节点并且他们的路径最长,该最长路径即为该树的直径

求法:

1、使用bfs或dfs:先取树中的一个点进行dfs/bfs,找到离该点最远的点p,点p一定是树直径的一个端点

以该点在进行一次dfs/bfs,找到一个离p点最远的点q,则pq为该树的直径,且pq的距离为直径大小

2、树形dp(待补全)

代码:

dfs

void dfs(int u,int fa,int dist)    //u为当前结点,fa为u的父亲节点, dist为遍历到该点的距离 {    if(ans

bfs

void bfs(int u){    memset(vis1,false,sizeof(vis1));    memset(dis,0,sizeof(dis));ans=0;    queue
que; while(!que.empty())que.pop(); que.push(u); vis[u]=true; while(!que.empty()) { int top=que.front(); que.pop(); for(int i=head[top];i!=-1;i=edge[i].next) { int to=edge[i].to; if(!vis[to]) { vis[to]=true; dis[to]=dis[top]+edge[i].val; que.push(to); if(ans

 

转载于:https://www.cnblogs.com/LjwCarrot/p/11312022.html

你可能感兴趣的文章
netty是什么?
查看>>
微信小店二次开发功能套餐列表
查看>>
ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决
查看>>
Java中BIO,NIO,AIO的理解
查看>>
浅谈Sql各种join的用法
查看>>
Durid数据库连接池配置(不使用框架)
查看>>
BarCode128B字符转换函数(PB,SQL)
查看>>
watir学习资料
查看>>
Jmeter属性和变量
查看>>
java并发编程:并发容器之CopyOnWriteArrayList(转)
查看>>
python基础——面向对象进阶下
查看>>
Linux vi 命令详解
查看>>
本地如何搭建IPv6环境测试你的APP
查看>>
oracle、mysql新增字段,字段存在则不处理
查看>>
CAP原理
查看>>
动态加载主题
查看>>
leetcode[125]Valid Palindrome
查看>>
访问一个绝对地址把一个整型数强制转换 (typecast)为一个指针是合法的
查看>>
iOS项目开发之Socket编程 (转)
查看>>
C++ NULL与nullptr的区别
查看>>