分析過程:
(1)先考慮只有乙個節點的情形,設此時的形態有f(1)種,那麼很明顯f(1)=1
(2)如果有兩個節點呢?我們很自然想到,應該在f(1)的基礎上考慮遞推關係。那麼,如果固定乙個節點後,左右子樹的分布情況為1=1+0=0+1,故有f(2) = f(1) + f(1)
(3)如果有三個節點,(我們需要考慮固定兩個節點的情況麼?當然不,因為當節點數量大於等於2時,無論你如何固定,其形態必然有多種)我們考慮固定乙個節點,即根節點。好的,按照這個思路,還剩2個節點,那麼左右子樹的分布情況為2=2+0=1+1=0+2。
所以有3個節點時,遞迴形式為f(3)=f(2) + f(1)*f(1) + f(2)。(注意這裡的乘法,因為左右子樹一起組成整棵樹,根據排列組合裡面的乘法原理即可得出)
(4)那麼有n個節點呢?我們固定乙個節點,那麼左右子樹的分布情況為n-1=n-1 + 0 = n-2 + 1 = … = 1 + n-2 = 0 + n-1。此時遞迴表示式為f(n) = f(n-1) + f(n-2)f(1) + f(n-3)f(2) + … + f(1)f(n-2) + f(n-1)
接下來我們定義沒有節點的情況,此時也只有一種情況,即f(0)=1
那麼則有:
f(0)=1,f(1)=1
f(2)=f(1)f(0)+f(0)f(1)
f(3)=f(2)f(0)+f(1)f(1)+f(0)f(2)
. .
. .
f(n)=f(n-1)f(0)+f(n-2)f(1)+……….+f(1)f(n-2)+f(0)f(n-1)
該數列稱為卡特蘭數(catalan數),該遞推關係的解為:
即含n個節點的二叉樹有f(n)種形態。
(1)矩陣鏈乘: p=a1×a2×a3×……×an,依據乘法結合律,不改變其順序,只用括號表示成對的乘積,試問有幾種括號化的方案?
(2)乙個棧(無窮大)的進棧序列為1,2,3,..n,有多少個不同的出棧序列?
(3)有2n個人排成一行進入劇場。入場費5元。其中只有n個人有一張5元鈔票,另外n人只有10元鈔票,劇院無其它鈔票,問有多少中方法使得只要有10元的人買票,售票處就有5元的鈔票找零?(將持5元者到達視作將5元入棧,持10元者到達視作使棧中某5元出棧)
(4)將乙個凸多邊形區域分成三角形區域的方法數?
(5)在圓上選擇2n個點,將這些點成對連線起來,使得所得到的n條線段不相交的方法數。
(6)一位大城市的律師在她住所以北n個街區和以東n個街區處工作。每天她走2n個街區去上班。如果她從不穿越(但可以碰到)從家到辦公室的對角線,那麼有多少條可能的道路?
本文由以及總結而成
N個節點的二叉樹有多少種形態
catalan數,嘻嘻嘻 拿到這個題,首先想到的是直接寫出表示式肯定不行,所以有必要從遞推入手。由特殊到一般,歸納法麼 而且二叉樹離不開遞推這個尿性。先考慮只有乙個節點的情形,設此時的形態有f 1 種,那麼很明顯f 1 1 如果有兩個節點呢?我們很自然想到,應該在f 1 的基礎上考慮遞推關係。那麼,...
N個節點的二叉樹有多少種形態
這是一道阿里的面試題。其實算不上新鮮,但是我之前沒關注過,如今碰到了,就順便 下這個問題吧 拿到這個題,首先想到的是直接寫出表示式肯定不行,所以有必要從遞推入手。由特殊到一般,歸納法麼 而且二叉樹離不開遞推這個尿性。先考慮只有乙個節點的情形,設此時的形態有f 1 種,那麼很明顯f 1 1 如果有兩個...
N個節點的二叉樹有多少種形態
先考慮只有乙個節點的情形,設此時的形態有f 1 種,那麼很明顯f 1 1 如果有兩個節點呢?我們很自然想到,應該在f 1 的基礎上考慮遞推關係。那麼,如果固定乙個節點後,有兩種情況,一是左子樹還剩乙個節點,此刻型別數量為f 1 第二種情況是右子樹生乙個節點,此刻型別數量為f 1 固有f 2 f 1 ...