leetcode 684. 冗余连接
一、题目
找出无向图中的冗余连接,即将无向图还原成二叉树
1 | 输入: [[1,2], [1,3], [2,3]] |
二、解法
2.1 并查集
思路:通过并查集寻找附加的边,初始时每个节点都属于不同的连通分量,遍历每一条边,判断这条边连接的两个顶点是否属于相同的连通分量
- 如果两个顶点属于不同的连通分量,则说明在遍历到当前的边之前,这两个顶点之间不连通,因此当前的边不会导致环出现,合并这两个顶点的连通分量。
- 如果两个顶点属于相同的连通分量,则说明在遍历到当前的边之前,这两个顶点之间已经连通,因此当前的边导致环出现,为附加的边,将当前的边作为答案返回。
1 | class Solution { |
复杂度分析
- 时间复杂度:O(klogk),其中k是图中的节点个数
- 空间复杂度:O(n)
2.2 使用==按秩合并+路径压缩==的并查集
优化了空间复杂度
1 | class Solution { |
复杂度分析
- 时间复杂度:O(klogk)
- 空间复杂度:O(1)