LeetCode 96 不同的二叉搜尋樹

2021-09-25 20:33:36 字數 780 閱讀 5317

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

n = 3時,有5種

1         3       3       2      1

\       /        /         / \        \

3    2       1       1   3       2

/     /           \                      \

2    1             2                    3

思路:

假設n個節點存在二叉排序樹的個數是g(n),令f(i)為以i為根的二叉搜尋樹的個數,則:

g(n)=f(1)+f(2)+f(3)+f(4)+...+f(n)

當i為根節點時,其左子樹節點個數為i-1個,右子樹節點為n-i,則:

f(i)=g(i−1)∗g(n−i)

兩個公式可以得到 卡特蘭數 公式:

g(n)=g(0)∗g(n−1)+g(1)∗(n−2)+...+g(n−1)∗g(0)

public class numtrees 

//g(n)=g(0)∗g(n−1)+g(1)∗(n−2)+...+g(n−1)∗g(0)

for (int i = 2; i < n + 1; i++)

}return dp[n];

}public static void main(string args)

}

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