利用卡塔蘭數(catalan)求二叉樹的問題

2021-06-22 11:24:50 字數 631 閱讀 7446

例題:

由3 個結點可以構造出多少種不同的二叉樹?

公式:catalan(n)=c(2n,n)/(n+1)。

n為結點數。

c(2n,n)是排列的知識。

有題目可以得到n = 3

所以有    c(2*3,3)/(3+1) =  ((6*5*4)/(3*2*1))  / 4 = 5; 

題外話:一棵具有 n個結點的完全二叉樹的樹高度(深度)是log2(n+1).

以下是**的實現 

方法1

#include #define ll long long 

using namespace std;

ll catalan(int n)

ll result = tmp[n];

delete tmp;

return result;

} int main()

方法2

#include#includeusing namespace std;

long long tmp[1000];

long long catalan(int n)

int main()

Catalan數 卡塔蘭數 的證明

定義 從 0,0 到 n,n 不越過 可以接觸 直線y x 即每一步的落腳點都滿足y x 且每次只能往上或往右走。求方案數。結果 c 2n,n c 2n,n 1 程式設計是可以實現小資料的 n比較小時可以列舉,不過n可能會很大 證明方法 有很多種,自己上維基百科就能搜到 這裡給大家介紹一種不太常見的...

卡塔蘭數介紹與應用

5.總結 最近在leetcode上鍛鍊演算法題的時候,偶然看到一篇介紹卡塔蘭數的文章,在這之前其實已經簡單的了解過卡塔蘭數以及與之相關問題,溫故而知新,藉此機會重新整理和總結一下,同時自己也手動寫出了遞推公式的推理過程,畢竟很多人第一次看到卡塔蘭的遞推公式時,都會有疑問,這條公式是怎麼來的。題目描述...

應用卡塔蘭數解決出棧分析

今天被一道資料結構習題難住了,覺得挺有意思就寫博一篇記錄下來,被該題男主並非是不會用程式設計解決,而是考慮問題思維太狹窄導致的。題目如下 鐵路進行列車排程時,常把站台設計成棧式結構的站台。試問 設有編號為1,2,3,4,5,6的六輛列車,順序開入棧式結構的站台,則可能的出棧序列有多少種?本題題意是,...