Menu
CoddyTech

Graph Valid Tree

中等并查集图python iconjava iconcpp iconc iconjs icon+10

给你 n 个节点,编号从 0 到 n-1,以及一个由无向边组成的列表 edges。每一对 [a, b] 都连接节点 a 和节点 b。

如果这些边能将所有 n 个节点组成一棵树,就返回 true:每个节点都能到达其他所有节点,并且不存在环。否则返回 false。

函数

validTree(n: integer, edges: integer-2d-array) → boolean
ninteger
节点数量,编号从 0 到 n-1
edgesinteger-2d-array
无向边,每条边都是一对 [a, b]
返回值boolean
如果这些边将所有 n 个节点连接成一棵树,则为真;否则为假

约束条件

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b],其中 0 ≤ a, b ≤ n-1 且 a ≠ b
  • 没有任何一条边会重复出现,无论方向如何。

示例

输入
n = 5edges = [[0, 1], [0, 2], [0, 3], [1, 4]]
输出
true
解释
节点 0 连接到节点 1、2 和 3,节点 4 则连接到节点 1。4 条边将全部 5 个节点连接起来,且没有循环,因此这是棵树。
challenge icon

进阶

当图不是树时,必须删除多少条边,并添加多少条边,才能使它变成树?你能否只遍历一次就把两者都数出来?

重置代码
def validTree(n, edges):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

n = 5
edges = [[0, 1], [0, 2], [0, 3], [1, 4]]

预期输出

true