Leetcode 96 不同的二叉搜尋樹 C

2021-10-07 06:15:40 字數 640 閱讀 8502

給定乙個整數 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個節點組成的二叉搜尋樹的數目

根據二叉搜尋樹的特點,左子樹的節點都小於根節點,右子樹的節點都大於根節點。因此構造的過程中,我們遍歷每個點充當根節點,假設我們現在有i個節點,我們讓j+1作為根節點,則小於j+1的j個節點構成的二叉搜尋樹便成為了左子樹;j+2~i的i-j-1個節點構成的二叉搜尋樹便成為了右子樹。二者組合便成了所有的二叉搜尋樹,顯然,我們的動態轉移方程為

int

numtrees

(int n)

}return dp[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 ...