总结

本文介绍了图算法中的关键概念,包括如何统计非连通图的数量、判断一棵树的高度最大化的根节点的方法,以及在图遍历过程中如何避免重复访问等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 给定一个图,这个图不一定是连通的,统计连通图的个数的做法:
A 深度搜索   遍历每一个节点,注意要设置一个标志数组,将已经遍历过的节点做标记,防止同一个连通图中的节点被多次访问
B 并查集   遍历每一条边,最后统计father数组中有几个不同father  这个工作最早可以在录入边时就完成

2 N个节点有N-1条边,如果这个图是连通的,那么就一定是棵树
一个树,求使其树高达到最大的根节点(可能有多个),有一个作为定理的做法:
先选择任意一个节点,从该节点开始遍历整棵树,获取能达到的最深的顶点,记为节点集合A;然后从A中任意一个结点出发遍历整棵树,获取能达到的最深节点,记为节点集合B;集合A与集合B的并集即为所求。

3 有的题中要建立名称(字符串)和编号(整型)之间的映射,用两个数组分别来做,stringtoint和inttostring,如果有排序要求当然也可以用map,string类型可以直接进行比较,无需重载运算符

4 深度搜索时经常要处理这么几个问题:
A 确保一个节点不会被多次遍历,通常是设置vis数组
B 如果在遍历过程中要对边进行一些操作,确保不会有漏掉的边,为此可以先对边操作再处理递归节点的问题;同时也要确保不会重复操作,为此可以在处理完一条边之后将边删除

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值