01 Tree

最爱丁珰發表於2024-07-08

有利用數學歸納法思想的擴充套件法,就有反過來的刪除法,這裡利用刪除法

考慮對於一顆合法的樹,顯然刪除某兩個葉子,會讓其共同父親變成葉子,這就形成了一個遞迴的過程;而某兩個葉子在序列\(a\)中也一定是相鄰的,而且很容易發現特徵,就是其\(a\)的大小相差\(1\)

但是現在的問題就是我們不知道刪除哪兩個相差\(1\)的相鄰的\(a\),因為滿足相差\(1\)的相鄰的\(a\)有很多,這個時候我們就考慮特殊元素,考慮\(a\)最大的元素,顯然其父親的另一個節點也一定是葉子節點(否則如果另一個節點還有子孫,就與這個元素的\(a\)最大相矛盾),於是就可以刪除這兩個元素(當然要滿足刪除的前提條件,就是其相鄰的\(a\)要比其小\(1\))並且向序列中新增一個\(a\)值為較小元素的元素,就形成了一個子問題;注意可能\(a\)最大的元素左邊和右邊的元素都比其小\(1\),這個時候無論刪除誰都可以,得到的新的\(a\)序列都長成一個樣子

相關文章