不相交集資料結構

2021-09-05 13:03:37 字數 813 閱讀 3525

用乙個1x3的陣列來儲存每個數的數、其父親、秩。

首先尋找合併的兩個樹的根的根,然後按照秩的大小將兩個樹進行合併。

尋找兩個數的根時,順便壓縮其與根的距離

#include#define max 100

int find(int a[3],int n);

void rootunion(int a[3],int m,int n);

int main()

printf("資料 父親 秩\n");

for(i=0;i<=a[0][0];i++)

printf("合併哪兩個數:");

scanf("%d %d",&m,&n);

rootunion(a,m,n);

printf("資料 父親 秩\n");

for(i=0;i<=a[0][0];i++)

return 0; }

int find(int a[3],int n)

} while(a[i][1]!=0) //尋找n的根

int root=a[i][1];

y=n;

while(a[j][1]!=0) //路徑壓縮

return a[i][1]; //返回根

}void rootunion(int a[3],int m,int n)

} for(q=1;q<=a[0][0];q++) }

if(a[u][2]<=a[v][2]) }

else

}

資料結構 不相交集ADT

若對於每一對元素 a,b a b屬於s,arb或者為true或者為false,則稱在集合s上定義關係r。如果arb是true,那麼我們說a與b有關係。等價關係是滿足下列三個性質的關係r 自反性 對於所有的a屬於s,ara 對稱性 arb當且僅當bra 傳遞性 若arb且brc,則arc 乙個元素a屬...

《資料結構與演算法分析》不相交集

前言 回來到學校,今天又要開始苦逼的工作了,後悔回家玩去了,現在想學習時間又不夠了。就是這麼傻 我的github 不相交集 思想 不相交集是解決等價問題的一種有效的資料結構,之所以稱之為有效是因為,這個資料結構簡單 幾行 乙個簡單陣列就可以搞定 快速 每個操作基本上可以在常數平均時間內搞定 首先我們...

用於不相交集合的資料結構

make set x 建立乙個集合,它的唯一成員 因而為代表 是x。因為各個集合是不相交的,所以x不會出現在別的某個集合中 union x,y 將包含x和y的兩個集合合併。假定操作之前著兩個集合是不相交的。find set x 返回乙個指標,這個指標指向包含x的 唯一 集合的代表。按秩合併 秩表示該...