leetcode不同的二叉搜尋樹

2021-10-03 15:46:50 字數 731 閱讀 4682

1.動態規劃

對於有序娛樂1-n構建二叉搜尋樹,我們可以遍歷,對數字i,將i作樹根,則1--i-1構成其左子樹,i+1--n構成其右子樹。

設g(n):長度為n的序列構成的二叉搜尋樹的個數

f(i):以i為根節點的二叉搜尋樹個數

得到:g(n)=f(1)+f(2)+.......+f(n)

對於邊界值,即n=0或1時,分別對應空樹和只有根,則g(0)=g(1)=1.

對於f(i),即以i為根節點,其左子樹有1---i-1構成,長度為(i-1);右子樹右i+1---n構成,長度為(n-i),

得到f(i)=g(i-1)*(n-i)

即g(n)=g(0)*g(n-1)+g(1)*g(n-2)+...+g(i-1)*g(n-i)+....+g(n-1)*g(0).

由於g(n)依賴g(0)---g(n-1),故從小到大依次計算,

且初始化g(0)=g(1)=1

**如下:

class solution 

};

2.數學公式

右遞迴公式知為卡特蘭數,

該數簡單定義如下:

可自行編寫**

LeetCode 不同的二叉搜尋樹 II

給定乙個整數 n,生成所有由 1 n 為節點所組成的二叉搜尋樹。示例 輸入 3 輸出 1,null,3,2 3,2,null,1 3,1,null,null,2 2,1,3 1,null,2,null,3 解釋 以上的輸出對應以下 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 ...

Leetcode 不同的二叉搜尋樹 II

給定乙個整數 n,生成所有由 1 n 為節點所組成的二叉搜尋樹。示例 輸入 3 輸出 1,null,3,2 3,2,null,1 3,1,null,null,2 2,1,3 1,null,2,null,3 解釋 以上的輸出對應以下 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 ...

LeetCode之不同的二叉搜尋樹

解題步驟 題目可以轉換為求以i 1 i n 為根節點的不同結構的二叉樹數量,然後相加就可以的出答案。假如我們以i為根節點,左子樹由 1,i 1 構成,右子樹由 i 1,n 構成。由於二叉搜尋樹左節點值小於根節點值,右節點值大於根節點值,並對所有子樹都成立,所以左子樹 1,i 1 與右子樹 i 1,n...