不同的二叉搜尋樹

2021-10-25 19:32:16 字數 1068 閱讀 7440

示例:

輸入: 3

輸出: 5

解釋:給定 n = 3, 一共有 5 種不同結構的二叉搜尋樹:

1         3     3      2      1

\       /     /      / \      \

3     2     1      1   3      2

/     /       \                 \

2     1         2                 3

2.1  思路分析當求解問題的方案總數時往往能夠聯想到動態規劃,而動態規劃是能夠將原問題分解為多個子問題,因此能不能使用動態規劃需要分析該問題能否分解為子問題;

現在已知就是序列[1,2,3,...,n],我們假設以 i (1<=i<=n) 為根節點構造bst,那麼其左子樹為[1,...,i-1],其右子樹為[i+1,...,n],而左右子樹的構建可以按照同樣的方式遞迴構建;

因此,原問題就分解成了兩個規模較小的子問題,而且子問題的解是可以復用的,因此可以使用動態規劃求解;

定義狀態:①g(n)表示長度為 n 的序列能構成的不同二叉搜尋樹的個數;②f(i,n)表示以 i為根、序列長度為 n 的不同二叉搜尋樹個數(1≤i≤n)。

具體的推導過程就看一下這裡吧:

對公式的解釋

2.2  **實現

class solution 

}return g[n];}}

2.3  複雜度分析3.1  思路分析

數學中有專門用於計算卡特蘭數的公式:

3.2  **實現

class solution 

return (int) c;}}

3.3  複雜度分析

不同的二叉搜尋樹

題目 力扣 解題思路 可以看注釋 class solution return helper choice,k choice表示選擇,按大小順序排列,k表示取第k個序列,從1開始計數 public string helper listchoice,int k 以某一元素開頭的序列個數,一共有n n個 ...

不同的二叉搜尋樹

leetcode演算法 演算法題 動態規劃 dp i 代表的是長度為i的序列所能構成多少個不同的二叉搜尋樹 f x,i 代表的是以x為根,長度為i所能構成的不同的二叉搜尋樹的種類 那麼dp i f 1,i f 2,i f i,i 同時f x,i 的公式也出來了1 2 3 4 x i 1 i 可以發現...

不同的二叉搜尋樹

不同的二叉搜尋樹 給定乙個整數 n,求以 1 n 為節點組成的二叉搜尋樹有多少種?示例 輸入 3 輸出 5 解釋 給定 n 3,一共有 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 2 2 1 2 3動態規劃 假設n個節點存在二叉排序樹的個數是g n 令f i 為以i為根的二叉...