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

tips: 動態規劃,對每個元素作爲根節點的情況進行遍歷,然後計算左子樹的可能次數乘以右子樹的可能次數

class Solution {
public:
    int numTrees(int n) {
        if(n<=0) {
            return 0;
        }
        vector<int> dp;
        int num;
        dp.push_back(1);
        dp.push_back(1);
        
        for (int i = 2; i <= n; i++)
        {
            num=0;
            for (int j = 1; j <= i; j++)
            {
                num+=dp[j-1]*dp[i-j];
            }
            dp.push_back(num);
        }
        return dp[n];
    }
};
發佈了94 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章