mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 07:35:35 +08:00
Update 图论并查集理论基础.md
修正错别字和语病
This commit is contained in:
@ -108,7 +108,7 @@ bool isSame(int u, int v) {
|
||||
|
||||

|
||||
|
||||
如果这棵多叉树高度很深的话,每次find函数 去寻找跟的过程就要递归很多次。
|
||||
如果这棵多叉树高度很深的话,每次find函数 去寻找根的过程就要递归很多次。
|
||||
|
||||
我们的目的只需要知道这些节点在同一个根下就可以,所以对这棵多叉树的构造只需要这样就可以了,如图:
|
||||
|
||||
@ -300,7 +300,7 @@ join(3, 2);
|
||||
|
||||
**因为路经压缩了**
|
||||
|
||||
即如下代码在寻找跟的过程中,会有路径压缩,减少 下次查询的路径长度。
|
||||
即如下代码在寻找根的过程中,会有路径压缩,减少 下次查询的路径长度。
|
||||
|
||||
```
|
||||
// 并查集里寻根的过程
|
||||
@ -396,7 +396,7 @@ void join(int u, int v) {
|
||||
if (rank[u] <= rank[v]) father[u] = v; // rank小的树合入到rank大的树
|
||||
else father[v] = u;
|
||||
|
||||
if (rank[u] == rank[v] && u != v) rank[v]++; // 如果两棵树高度相同,则v的高度+1因为,方面 if (rank[u] <= rank[v]) father[u] = v; 注意是 <=
|
||||
if (rank[u] == rank[v] && u != v) rank[v]++; // 如果两棵树高度相同,则v的高度+1因为,上面 if (rank[u] <= rank[v]) father[u] = v; 注意是 <=
|
||||
}
|
||||
```
|
||||
|
||||
@ -423,7 +423,7 @@ void join(int u, int v) {
|
||||
|
||||
空间复杂度: O(n) ,申请一个father数组。
|
||||
|
||||
关于时间复杂度,如果想精确表达出来需要繁琐的数学证明,就不在本篇讲解范围内了,大家感兴趣可以自己去深入去研究。
|
||||
关于时间复杂度,如果想精确表达出来需要繁琐的数学证明,就不在本篇讲解范围内了,大家感兴趣可以自己去深入研究。
|
||||
|
||||
这里做一个简单的分析思路。
|
||||
|
||||
|
Reference in New Issue
Block a user