資料結構與演算法之並查集的精簡要點總結

2021-10-02 17:14:12 字數 323 閱讀 2102

並查集主要用於解決連線問題,其基本思想是為每乙個資料都打上標籤,當標籤一致時則為乙個集合。但是考慮到求並集的時候的效率問題,這裡採用樹形結構解決該問題,簡單來說就是利用兩個節點的根節點是否一致作為是否為乙個集合的標誌。

查詢:為防止該資料結構退化為鍊錶,在每次查詢過程中,選擇進行路徑壓縮,使該節點指向該節點的父節點的父節點。查詢的結果則返回該節點所在子樹的根節點。

合併:合併過程為了保證該資料結構的高效性,通過該所在子樹的總層數決定哪個根節點(層數少的)為子節點,哪個根節點仍為根節點。

查詢是否連線:判斷兩個節點的查詢結果是否一致即可。

理論上時間複雜度近乎為o(1)。

資料結構與演算法之並查集

並查集結構可以用於 1 檢查兩個元素是否屬於同乙個集合 比如對於圖1這個例子來說,如果我們想要檢查節點d和節點e是否屬於同乙個集合,可以這樣操作 d節點往上找其父節點,一直往上找,直到某個節點的父節點是其本身,此時停止 找到了節點a e節點也按照相同的步驟往上找其父節點,找到節點a 如果這兩個節點往...

資料結構與演算法之並查集

並查集 union find 是一種高效的資料結構,主要的操作有 為方便敘述,把所有元素視作點,元素之間的關係視作線,存在聯絡便存在關係 需要注意的是,這裡的關係應當是1.自反的,2.對稱的,3.傳遞的 所謂合併,便是將兩個點之間 畫 一條線。又上邊的定義不難理解相連的若干點之間互相存在關係,這樣我...

演算法基礎之資料結構 並查集

題目 合併計算 一共有 n 個數,編號是 1 n,最開始每個數各自在乙個集合中。現在要進行 m 個操作,操作共有兩種 m a b,將編號為 a 和 b 的兩個數所在的集合合併,如果兩個數已經在同乙個集合中,則忽略這個操作 q a b,詢問編號為 a 和 b 的兩個數是否在同乙個集合中 輸入格式 第一...