並查集是一種樹型的資料結構,用於處理一些不相交集合的合併問題。
並查集的主要操作有:
1-合併兩個不相交集合
2-判斷兩個元素是否屬於同乙個集合
3-路徑壓縮
判斷元素是否屬於同一集合:
由此用某個元素所在樹的根結點表示該元素所在的集合
判斷兩個元素時候屬於同乙個集合的時候,只需要判斷他們所在樹的根結點是否一樣即可
也就是說,當我們合併兩個集合的時候,只需要在兩個根結點之間連邊即可
路徑壓縮
上述的做法是指就是將元素的父親結點指來指去的在指,當這課樹是鏈的時候,可見判斷兩個元素是否屬於同一集合需要o(n)的時間,於是路徑壓縮產生了作用
路徑壓縮實際上是在找完根結點之後,在遞迴回來的時候順便把路徑上元素的父親指標都指向根結點
找根節點程式
int getfather (int v)
合併程式
bool union(int x,int y)
(union為保留字!!!)
判斷是否在同一集合(同一根節點)
bool judge(int x,int y)
並查集入門
簡述 其實並查集顧名思義就是有 合併集合 和 查詢集合 兩種操作的關於資料結構的一種演算法。並查集演算法不支援分割乙個集合。演算法 用集合中的某個元素來代表這個集合,該元素稱為集合的代表元。乙個集合內的所有元素組織成以代表元為根的樹形結構。對於每乙個元素 parent x 指向x在樹形結構上的父親節...
並查集入門
1.並查集是一種樹形的資料結構,顧名思義,它用於處理一些不交集的合併及查詢問題。它支援兩種操作 查詢 find 確定某個元素處於哪個子集 合併 union 將兩個子集合並成乙個集合。初始化 void makeset int size 查詢 int find int x 合併 void unionse...
並查集入門
簡述 其實並查集顧名思義就是有 合併集合 和 查詢集合 兩種操作的關於資料結構的一種演算法。並查集演算法不支援分割乙個集合。演算法 用集合中的某個元素來代表這個集合,該元素稱為集合的代表元。乙個集合內的所有元素組織成以代表元為根的樹形結構。對於每乙個元素 parent x 指向x在樹形結構上的父親節...