1719 重構一棵樹的方案數 拓撲排序 猜結論

2021-10-14 11:55:56 字數 865 閱讀 5429

1.我們記每個點在pai

rs

pairs

pair

s**現的次數為deg

degde

g,祖先一定比兒子的度數要大。

2.因此我們可以拓撲排序所有出現過的點,然後從小到大找,對於當前結點i

ii,我們往後找到第乙個與他相連的結點,這個結點j

jj就是它的直接祖先,如果他們兩的度數相同說明這兩個點等價,因此有根樹有多種,而且還有判斷,對於所有與i

ii相連的結點 肯定也必須與j

jj相連才行。

const

int n=

505;

#define pb push_back

#define mst(a,b) memset(a,b,sizeof b)

class

solution

vector<

int>b;

for(

int i=

1;i<=

500;i++)if

(deg[i]

) b.

push_back

(i),g[i]

[i]=1;

//這裡一定要寫g[i][i]=1

sort

(b.begin()

,b.end()

,[&]

(int x,

int y)

->

bool);

int n=b.

size()

;bool ok=0;

for(

int i=

0;i}return ok?2:

1;}}

;

一棵樹是否為另一棵樹的子結構

輸入兩顆二叉樹a,b,判斷b是不是a的子結構。問題描述 給定兩個二叉樹的根節點,判斷第二樹是否是第乙個樹的子樹,如果是返回1,否則返回0.拿第二個樹的每個節點去和第乙個樹做匹配,如果某個節點匹配成功,就接著往下匹配,否則重新從第二個樹的的根節點開始。注意區別 測試用例 樹1 42 6 1 3 5 7...

如何判斷一棵樹是不是另一棵樹的子樹

package suanfatest class treenode treenode int value treenode int value,treenode leftchild,treenode rightchild public int getvalue public void setvalu...

一棵樹的子樹數量

原題 who killed cock robin 題意 給出一顆無根樹,問有多少種子圖 包括點 解析 既然無根樹,那麼就隨便選擇乙個點為rt,就1好了 用x i 表示以i點為父親得到的圖的可能性 對於每個點i,兒子數為0時,x i 為0,有n個兒子時,對於每個兒子j所能產生的可能性為x j 1,而x...