文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给定从 0 到 n-1 标号的 n 个结点,和一个无向边列表(每条边以结点对来表示),
请编写一个函数用来判断这些边是否能够形成一个合法有效的树结构

示例 1:
输入: n = 5, 边列表 edges = [[0,1], [0,2], [0,3], [1,4]]
输出: true示例 2:
输入: n = 5, 边列表 edges = [[0,1], [1,2], [2,3], [1,3], [1,4]]
输出: false
注意:你可以假定边列表 edges 中不会出现重复的边。
由于所有的边是无向边,边 [0,1] 和边 [1,0] 是相同的,
因此不会同时出现在边列表 edges 中。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/graph-valid-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

请参考:数据结构–并查集(Disjoint-Set)

  • 采用并查集判断连通,还可以BFS、DFS
class dsu
{vector<int> f;
public:dsu(int n){f.resize(n);for(int i = 0; i < n; ++i)f[i] = i;}void merge(int a, int b){int fa = find(a), fb = find(b);f[fa] = fb;}int find(int a){int origin = a;while(a != f[a])a = f[a];return f[origin] = a;}int countUni(){int count = 0;for(int i = 0; i < f.size(); ++i)if(i == find(i))count++;return count;}
};
class Solution {public:bool validTree(int n, vector<vector<int>>& edges) {dsu u(n);for(auto& e : edges)u.merge(e[0], e[1]);return edges.size()+1==n && u.countUni()==1;}
};

20 ms 10.7 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 261. 以图判树(全部连通+边数=V-1)相关推荐

  1. Leetcode 261.以图判树

    Time: 20190903 Type: Medium 题目描述 给定从 0 到 n-1 标号的 n 个结点,和一个无向边列表(每条边以结点对来表示),请编写一个函数用来判断这些边是否能够形成一个合法 ...

  2. leetcode261. 以图判树

    给定从 0 到 n-1 标号的 n 个结点,和一个无向边列表(每条边以结点对来表示),请编写一个函数用来判断这些边是否能够形成一个合法有效的树结构. 示例 1: 输入: n = 5, 边列表 edge ...

  3. leetcode刷题之树(三)

    翻转二叉树,感觉做二叉树的问题好像都是那一套公式,除了个别的问题解决不了,用上篇博客leetcode刷题之树(二)的模型基本可以解决.总体来说就是树基本都可以利用递归和迭代的方法去解决,在涉及到树的遍 ...

  4. LeetCode 572. 另一个树的子树 思考分析

    题目 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树.s 的一个子树包括 s 的一个节点和这个节点的所有子孙.s 也可以看做它自身的一棵子树. 示例 1: 给定 ...

  5. LeetCode 31. Next Permutation-- Python 解法--数学题--比当前数大的最小的数

    LeetCode 31. Next Permutation-- Python 解法–数学题–比当前数大的最小的数 此文首发于我的个人博客:LeetCode 31. Next Permutation-- ...

  6. Leetcode刷题第1题:两数之和(基于Java语言)

    ** Leetcode刷题第1题:两数之和(基于Java语言) ** 题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 ...

  7. 【LeetCode】【HOT 100】2. 两数相加

    [LeetCode][HOT 100]2. 两数相加 文章目录 [LeetCode][HOT 100]2. 两数相加 package hot;import java.util.Arrays;class ...

  8. 树变二叉树结点数计算

    树变二叉树结点数计算 @(算法学习) (2011.6) 已知一棵有2011个结点的树,其叶结点个数是11个,该树对应的二叉树中无右孩子的结点的个数是:1896. 分析:这类题,已经假设了普适的规律,因 ...

  9. LeetCode 2217. 找到指定长度的回文数

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   给你一个整数数组 qu ...

最新文章

  1. JavaWeb界面在线配置代码生成器
  2. linux刷除U盘grub,删除linux系统出现grub rescue
  3. Idea 设置Eclipse快捷键(常用)
  4. Leetcode刷题(2)回文数
  5. 解决: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  6. SonarQube代码质量管理平台C++插件sonar-cxx的安装
  7. ubuntu linux本地源,如何制作UbuntuLinux操作系统的本地源?
  8. 基于SkyEye的覆盖率测试
  9. Android 功耗(19)---LCD背光驱动节电技术-LABC/CABC
  10. Unity3D基础13:给物品添加力
  11. R数据分析:二分类因变量的混合效应,多水平logistics模型介绍
  12. 火狐浏览器打印网页不全_火狐浏览器网页显示不全
  13. 一级域名与二级域名之间的区别
  14. Unity3D 设置透明材质
  15. BAT齐聚阿里安全-ASRC生态大会:呼吁联合共建网络安全白色产业链
  16. 电脑系统怎么重装?PE系统安装教程一键系统重装
  17. H - Hellcife is on fire Gym - 102448H
  18. vue之table案例
  19. 这八个步骤,Python让你轻松爬取B站弹幕,网友看了都说666
  20. 读书有益——》小朋友的诗(六)

热门文章

  1. 【R】语言第一课-----安装
  2. 【spider】selenium模拟点击斗鱼示例
  3. 多继承以及MRO顺序【super().的使用】
  4. python编程中的if __name__ == 'main': 的作用和原理[2]
  5. mysql非主键索引_主键索引和非主键索引的区别
  6. TeamViewer免费版和付费版有什么不同
  7. oracle12c多个pdb,ProxmoxVE 之 oracle12C 多CDB和PDB
  8. c++学习书籍推荐《超越C++标准库:Boost库导论》下载
  9. Scrapy学习-25-Scrapyd部署spider
  10. MapReduce编程中常用的字符操作