diff --git a/problems/图论并查集理论基础.md b/problems/图论并查集理论基础.md index 347bf58f..a65d4807 100644 --- a/problems/图论并查集理论基础.md +++ b/problems/图论并查集理论基础.md @@ -108,7 +108,7 @@ bool isSame(int u, int v) { ![](https://code-thinking-1253855093.file.myqcloud.com/pics/20230602102619.png) -如果这棵多叉树高度很深的话,每次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数组。 -关于时间复杂度,如果想精确表达出来需要繁琐的数学证明,就不在本篇讲解范围内了,大家感兴趣可以自己去深入去研究。 +关于时间复杂度,如果想精确表达出来需要繁琐的数学证明,就不在本篇讲解范围内了,大家感兴趣可以自己去深入研究。 这里做一个简单的分析思路。