leetcode96 不同的二叉搜尋樹

2021-10-05 10:20:43 字數 855 閱讀 7117

給定乙個整數 n,求以 1 … n 為節點組成的二叉搜尋樹有多少種?

示例:

輸入:

3輸出:

5解釋:

給定 n =

3, 一共有 5 種不同結構的二叉搜尋樹:13

321 \ /

// \ \

321132/

/ \ \

2123

方法一:

遞迴。當我現在有n個數字可以選擇時,我可以任選乙個,然後將數字分成左右兩部分。因此當前數字i為根節點的組合數量為左子樹的組合數量*右子樹的組合數量。

另外,其實我們並不需要關心左右數字的範圍,只需要知道左部分和右部分的數字數量即可得到組合數量。

class

solution

return res;}}

;

方法二:

根據上述的遞迴函式可以改寫動態規劃。

首先變數只有乙個,因此是一維動態規劃問題。n的取值範圍是從0~n共n+1個數字,因此建立乙個n+1長度的陣列dp。

遞迴的終止條件是n==0或者1.(base case),即dp[[0]=dp[1]=1(初始化動態規劃陣列)。

然後觀察遞迴函式中的主體部分,當我在求dp[i]時,我需要知道dp[0]~dp[i-1]上的所有值。

另外遞迴函式求的是n這個位置的值,因此最後返回dp[n]即可。

class

solution

}return dp.

back()

;}};

leetcode 96 不同的二叉搜尋樹

給定乙個整數 n,求以 1 n 為節點組成的二叉搜尋樹有多少種?示例 輸入 3 輸出 5 解釋 給定 n 3,一共有 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 2 2 1 2 3n 0 表示,有0個點,那麼,可以組成的二叉查詢樹就乙個,那就是空樹 n 1表示,有1個點,那麼...

Leetcode 96 不同的二叉搜尋樹

給定乙個整數 n,求以 1 n 為節點組成的二叉搜尋樹有多少種?示例 輸入 3 輸出 5 解釋 給定 n 3,一共有 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 2 2 1 2 3主要參考 本題其實是構造卡特蘭數的應用,採用動態規劃思想求解。通過求解出子問題來實現最終問題的求...

leetcode96 不同的二叉搜尋樹

給定乙個整數 n,求以 1 n 為節點組成的二叉搜尋樹有多少種?示例 輸入 3 輸出 5 解釋 給定 n 3,一共有 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 2 2 1 2 3 我們把n 0 時賦為1,因為空樹也算一種二叉搜尋樹,假設n個節點存在二叉排序樹的個數是g n ...