leetcode 96 不同的二叉搜尋樹

2021-10-01 23:21:03 字數 1358 閱讀 6708

推一下就發現是卡特蘭數了

或者直接畫出來就能發現規律了

n=0和1肯定只有1種樹

n=2有2種

n=3如上有5種

n=4的話有14種

其實看圖上的例子我們就可以發現,固定乙個根節點後,左右子樹就是從剩下的結點裡面選出來,如此遞迴就是乙個二叉搜尋樹了

比如說固定了根節點為1,那麼它的左子樹是空的,而右子樹相當於從2~n裡面再構成乙個二叉搜尋樹

固定了根節點為2,那麼左子樹只能是1,右子樹相當於從3~n裡面再構成乙個二叉搜尋樹

固定根節點為3同理

…固定根節點為n情況其實同固定根節點為1類似的的

從上面分析我們可以寫出初步的遞迴**

class

solution

return sum;}}

;

執行結果

效率基本很低的

;執行結果,用時快多了,但是記憶體消耗還是很大,遞迴沒辦法

參考斐波那契數列裡面的重複計算,我們用乙個陣列來儲存結果

class

solution

;int

numtrees

(int n)

if(n%2!=

0)sum +

=numtrees

(n/2)*

numtrees

(n-1

-n/2);

flag[n]

=sum;

return sum;}}

;

執行結果 好像沒有什麼變化 ?…

嗯。。是動態規劃,

公式推得很巧妙,題解寫得很清楚這裡就不寫了

class

solution

}return g[n];}

};

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