[LeetCode] C++: Intermediate Problem-Tree 96. Different Binary Search Trees

96. Different Binary Search Trees

Medium difficulty 1005

Given an integer  n ,  how many types of binary search trees with 1 ...  n as nodes?

Example:

Input: 3
 Output: 5
 Explanation:
 Given n = 3, there are 5 binary search trees with different structures: 

   1 3 3 2 1 
    \ / / / \ \ 
     3 2 1 1 3 2 
    / / \ \ 
   2 1 2 3

Dynamic programming

class Solution {
public:
    int numTrees(int n) {
        vector<int> G(n+1, 0);
        G[0] = 1;
        G[1] = 1;
        for(int i = 2; i <= n; i++){
            for(int j = 1; j <= i; j++){
                G[i] += G[j-1] * G[i-j];
            }
        }
        return G[n];
    }
};

 

Guess you like

Origin blog.csdn.net/weixin_44566432/article/details/113853503