leetcode96 不同的二叉搜尋樹

2021-10-04 08:21:41 字數 1390 閱讀 1314

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

示例:

輸入: 3

輸出: 5

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

1         3     3      2      1

\ / / / \ \

3 2 1 1 3 2

/ / \ \

2 1 2 3

開始我都沒有想到用動態規劃,因為之前也不熟,所以想用遞迴解,但是最後就演變成了動態規劃。

比如n=4,我需要知道他的左右子樹可以怎麼構成(0,3)(1,2)(2,1)(3,0),因為去掉根節點左右子樹一共三個節點。我只需要知道3個節點和2個節點的情況,於是就遞迴求解。求出n=3時候的狀態。最後自底向上解決。

class

solution

return map[n];}

public

void

solve

(int

map,

int cur)

sum*=2;

if((cur&1)

==1) map[cur]

=sum;

}}

四個月之後又做到這一題,想法就不一樣了。

用map儲存已經找過的數對,因為只需要找到3個節點有幾種情況,4個節點有幾種情況,分別作為左右子樹相乘就行,map記錄防止重複計算。

class

solution

return res;

}private

static hashmap

map =

newhashmap()

;public

intfun

(int left,

int right)

if(map.

containskey

(right - left +1)

)int k =0;

for(

int i = left; i <= right; i++

) map.

put(right - left +

1, k)

;return k;

}}

leetcode 64/100

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 ...