mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-11 13:00:22 +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大的树
|
if (rank[u] <= rank[v]) father[u] = v; // rank小的树合入到rank大的树
|
||||||
else father[v] = u;
|
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数组。
|
空间复杂度: O(n) ,申请一个father数组。
|
||||||
|
|
||||||
关于时间复杂度,如果想精确表达出来需要繁琐的数学证明,就不在本篇讲解范围内了,大家感兴趣可以自己去深入去研究。
|
关于时间复杂度,如果想精确表达出来需要繁琐的数学证明,就不在本篇讲解范围内了,大家感兴趣可以自己去深入研究。
|
||||||
|
|
||||||
这里做一个简单的分析思路。
|
这里做一个简单的分析思路。
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user