luogu P5018 對稱二叉樹

2021-10-03 13:54:19 字數 578 閱讀 8195

帶權的二叉樹裡找一棵節點數最多的子樹使得權值和結構都對稱

1e6這題最主要的點還是計算時間複雜度 剛看到的時候總是覺得每個點都要再往下找 那麼這個複雜度顯然是n方的 但是實際上是

n+n/2+n/2+n/4+n/4+...+1 複雜度是嚴格的nlogn

另外就是對樹的遞迴的處理 我總是想在乙個遞迴裡做完所有的事情

bool dfs(int x,int y)

if(y==-1)

if(w[x]!=w[y]||num[x]!=num[y])

if(dfs(l[x],r[y])&&dfs(l[y],r[x]))

dfs(l[x],r[x]);

dfs(l[y],r[y]);

return false;

}

但是注意到 當檢測完不對稱之後 又繼續去檢測子樹 那麼在一次呼叫裡在最壞情況下會引起4次子呼叫 於是時間複雜度一定比之前的式子大

正解應該是對每個點都進行檢測 控制子呼叫的次數 確保嚴格的nlogn

bool dfs(int x,int y)

Luogu P5018 對稱二叉樹 瞎搞樹 雜湊

我的天。普及組這麼 hard 然後好像沒有人用我的垃圾做法,好像是 o n 但十分的慢,並且極其暴力 qwq 具體來說,就是直接 dfs 求出樹高,然後想像出把原來的樹補成滿二叉樹的形態 震不震驚 qwq 然後對子樹雜湊,同時儲存正向的雜湊值 h1 u 和反向的雜湊值 h2 u 對稱時用 但每次向上...

P5018 對稱二叉樹

題解 什麼是對稱二叉樹,簡潔一點就是 任意一棵對稱二叉樹,以根節點為軸,是軸對稱的 qwq我真的只能解釋道這樣了 這道題可以用dfs求解 dfs深搜,size x 記錄以 x 為根的樹的大小 也就是以 x 為根的樹的所有節點的總數 當前節點左兒子非空,繼續遞迴左兒子,右兒子非空,繼續遞迴右兒子 si...

101 對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。思路 遞迴就用dfs,迭代是b...