2019 二叉樹形態總數(卡特蘭數)

2021-10-19 12:30:05 字數 660 閱讀 7003

題目描述:給定二叉樹的節點總數 n,輸出二叉樹形態總數,n<= 1000

輸入:3

輸出:5

n個結點組成的二叉樹形態總數=卡特蘭數=cmn

/(n+

1)

c_m^n/(n+1)

cmn​/(

n+1)

,其中m=2n。

可以寫乙個cmn函式將分子一塊計算出來,最後除以n+1即可。

由於n=1000時,計算c會比較大,所以不能使用int型,而要使用long long型。

可以回顧一下【leetcode96】不同的二叉搜尋樹(dp)雖然也是求卡特蘭數,但那題則是給出以1、2、…、n為結點組成的二叉搜尋樹種數,即結點的大小是確定的,而本題的結點大小是不確定的,也不是組成二叉搜尋樹。

#include

using

namespace std;

long

long

cmn(

long

long n)

for(

int i=n; i>=

1; i--

)return fengzi / fengmu;

}int

main()

卡特蘭數和二叉樹的構造

卡特蘭數 f n c2 nn c 2nn 1f n c n c f n c 2nn c2n n 1 簡要介紹含義 長度為2n的01序列,0 1各n個,要求前任意個數字中,1的數量 geq 0的數量.詳細請看大佬原文章 應用 1.入棧順序確定,求出棧順序。1表示入棧,0表示出棧,因為要先入棧才能出棧,...

N個節點的二叉樹有多少種形態(卡特蘭數)

這是一道阿里的面試題。其實算不上新鮮,但是我之前沒關注過,如今碰到了,就順便 下這個問題吧 拿到這個題,首先想到的是直接寫出表示式肯定不行,所以有必要從遞推入手。由特殊到一般,歸納法麼 而且二叉樹離不開遞推這個尿性。先考慮只有乙個節點的情形,設此時的形態有f 1 種,那麼很明顯f 1 1 如果有兩個...

卡特蘭數 不同的二叉搜尋樹

卡特蘭數是組合數學中乙個常出現在各種計數問題 現的數列。其公式為 c n c 2 c n 1 c 3 c n 2 c n 1 c 2 假設n個節點存在 即有 g n f 1 f 2 f 3 f 4 f n n為根節點,當i為根節點時,其左子樹節點個數為 1,2,3,i 1 右子樹節點個數為 i 1,...