不同的二叉搜尋樹

2021-10-08 03:44:07 字數 599 閱讀 1513

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

可以發現由於x兩邊的都是自然連續的序列,那麼兩邊的二叉搜尋樹的種類就和數值沒有關係,只和長度有關係

所以可以得出f(x,i)=dp[x-1]*dp[i-x]

最終  dp[i]=x從1到i的迴圈(dp[i]+f(x,i))最終返回dp[n]

初始化陣列,dp[0]=1(沒有節點,那麼只有一棵空樹),dp[1]=1(只有乙個節點,那麼也只有一種可能的樹),其他元素初始化為0.

class solution 

}return dp[n];

}};

不同的二叉搜尋樹

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

不同的二叉搜尋樹

不同的二叉搜尋樹 給定乙個整數 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為根的二叉...

不同的二叉搜尋樹

示例 輸入 3 輸出 5 解釋 給定 n 3,一共有 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 2 2 1 2 3 2.1 思路分析當求解問題的方案總數時往往能夠聯想到動態規劃,而動態規劃是能夠將原問題分解為多個子問題,因此能不能使用動態規劃需要分析該問題能否分解為子問題 ...