資料結構考研筆記(十二) 樹的應用(並查集)

2021-10-24 22:17:43 字數 1123 閱讀 2036

並查集:一種簡單的集合表示。

通常用樹的雙親表示法作為並查集的儲存結構。

通常用陣列元素的下標代表元素名,用根結點的下標代表子集合名,根結點的雙親結點為負數

initial(s)

將集合s中的每個元素都初始化為只有乙個單元素的子集合。

union(s, root1, root2)

把集合s中的子集合(互不相交) root2併入子集合root1.

find(s, x)

查詢集合s中單元素x所在子集合,並返回該子集合的名字。

下面的結點都是根節點,所以雙親結點都是負數

例題:

s=

s0=, s1=, s2=

解析:s0是根節點,下面有四個子結點(0,6,7,8)所以為 -4 , s1和s2 是根節點下面有三個子結點所以為-3, s4、s5、s6、s7、s8、s9都是子結點所以parent填相應的雙親結點,如s4的雙親結點是s1,表就填1。如下圖

;//雙親結點下標

void initial (

int s)

//查詢

intfind

(int s[

],int x)

//合併

void

union

(int s,

int root1,

int root2)

資料結構 考研筆記(二) 二叉樹的應用

計算二叉樹所有結點數 int n 0 void count btnode p 計算葉結點數 int n 0 void count 0 btnode p 利用右孩子指標連線葉結點 採用先序遍歷模板 void link ntnode p,btnode head,btnode tail else link...

考研資料結構筆記 棧

鏈棧棧的定義 棧是一種只能在一端進行插入或刪除操作的線性表,棧頂 允許進行插入或刪除操作的一端稱為棧頂 棧底 相對於棧頂在表的另一端,不能進行插入或刪除操作的一端稱為棧底,棧底是固定不變的。入棧 向棧中插入元素 出棧 刪除棧頂元素 棧最主要的特點就是先進後出 last in first out 按照...

考研資料結構筆記 佇列

鏈佇列佇列的定義 是一種先進先出的線性表,僅允許在表的一端進行插入,在表的另一端進行刪除,可進行插入操作的一端稱為隊尾,可進行刪除操作的一端稱為隊首。佇列的特點 先進先出 first in first out,fifo 佇列的儲存結構 可以分為順序佇列和鏈隊。順序佇列的定義 typedef stru...