LeetCode 96 不同的二叉搜尋樹

2021-10-08 03:25:28 字數 949 閱讀 7093

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

示例:

二叉搜尋樹的特點:

1.若任意結點的左子樹不空,則左子樹上所有結點的值均不大於它的根結點的值。

2. 若任意結點的右子樹不空,則右子樹上所有結點的值均不小於它的根結點的值。

3.任意結點的左、右子樹也分別為二叉搜尋樹。

當n=0時,二叉搜尋樹為空樹,也是一種二叉搜尋數樹

當n=1時,二叉搜尋樹只有 乙個節點,即頭節點1

設:dp[n]為有n個節點時,二叉搜尋樹的可能存在的個數,則:

一、當頭節點為1時,左子樹為空,右子樹的節點個數為(n-1),則右子樹可能的二叉搜尋樹的個數為dp[n-1],左子樹可能的二叉搜尋樹的個數為dp[0] = 1。dp[n] = dp[0]*dp[n-1]

二、當頭節點為 i 時,左子樹由 1—>i-1的節點構成, 二叉搜尋樹的可能個數為dp[i-1],

右子樹由 i+1—>n的節點構成,二叉搜尋樹的可能個數為dp[n-i]。dp[n] = dp[i-1]*dp[n-i]

三、當頭節點為n時,右子樹為空,左子樹的節點個數為(n-1),則左子樹可能的二叉搜尋樹的個數為dp[n-1],右子樹可能的二叉搜尋樹的個數為dp[0] = 1。dp[n] = dp[n-1]*dp[0]

==》dp(n)=dp(0)dp(n-1)+dp(1)dp(n-2)+dp(2)dp(n-3)+…+dp(n-1)dp(0)

==》 卡塔蘭數列的遞推式為:

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