leetcode 96 不同的二叉搜尋樹

2021-08-28 04:14:35 字數 875 閱讀 9948

給定乙個整數 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 表示,有0個點,那麼,可以組成的二叉查詢樹就乙個,那就是空樹

n=1表示,有1個點,那麼,可以組成的二叉查詢樹就乙個,那就是根節點為1,左右子樹均為空子樹

n=2表示,有2個點,那麼,可以組成的二叉查詢數就兩個,假設,點集合為[0,1,2](這裡的第乙個0表示空點,就是空子樹)那麼,0不能做根,如果1做根,那麼左子樹為0,右子樹就是2(看出來了嗎剛好是從1處截斷了),如果2做根,那麼左子樹為[0,1],右子樹為空子樹(剛好從2處截斷了(遞推為f(3)=f(0)(2)+f(1)f(1)+f(2)f(0)))。

以此類推,假設n=t,那麼表示,有t個點,那麼假設讓第x個點做根,那麼,左子樹為[0,……,t-1],右子樹為[t+1,……,n],那麼,最終的答案是 f(t) * f(n-t-1)這裡f(a)表示如果有a個點,那麼可以組成的樹的個數(畢竟我們是在處理這些數字之前,他們就有順序了,比如,[0,1,2]

class solution 

vi.push_back(tmp);

}return vi.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 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 ...

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 解題思路 動態規劃。令dp i 表示具有i個節點組成的二叉搜尋樹的種類,那麼dp i dp 0 d...