ETH官方钱包

前往
大廳
主題

LeetCode - 0894. All Possible Full Binary Trees 解題心得

Not In My Back Yard | 2024-03-17 12:00:00 | 巴幣 0 | 人氣 116

題目連結(jié):


題目意譯:
給定一整數(shù) n,回傳一個裝著所有由 n 個節(jié)點所組成的滿二元樹之列表。答案中每棵樹的每一個節(jié)點 Node 應(yīng)滿足 Node.val == 0。

答案中每一個元素為一種可能的樹之根節(jié)點。你可以按任意順序排列這些答案。

一個滿二元樹一棵樹,其中每一個節(jié)點只有恰好 0 個或 2 個小孩。

限制:
1 ≦ n ≦ 20



範(fàn)例測資:
範(fàn)例 1:
輸入: n = 7
輸出: [[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,null,null,null,null,0,0],[0,0,0,0,0,null,null,0,0]]

範(fàn)例 2:
輸入: n = 3
輸出: [[0,0,0]]


解題思維:
就遞迴窮舉:
「左邊分配 1 個節(jié)點、右邊分配 n - 2 個節(jié)點」、
「左邊分配 2 個節(jié)點、右邊分配 n - 3 個節(jié)點」、
……
「左邊分配 n - 3 個節(jié)點、右邊分配 2 個節(jié)點」、
「左邊分配 n - 2 個節(jié)點、右邊分配 1 個節(jié)點」
然後用若干個「根節(jié)點」把左右兩邊分配節(jié)點後回傳的結(jié)果合併即可(如果左邊有 L 個、右邊有 R,則合併後應(yīng)為 L × R 個)。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創(chuàng)作回應(yīng)

更多創(chuàng)作