【leetcode】unique-binary-search-trees

来源:互联网 发布:知乎关注排行 编辑:程序博客网 时间:2024/06/09 19:12


//2014年8月24日10:09:19//2014年8月24日10:23:27//公式,迭代,效率不高//f(n) = 2f(n-1)+2f(1)f(n-2)+2f(2)f(n-3)+...+2f((n-1)/2-1)f((n-1)/2+1)+f((n-1)/2)f((n-1)/2) n为奇数//f(n) = 2f(n-1)+2f(1)f(n-2)+2f(2)f(n-3)+...+2f(n/2)f(n/2) n为偶数#include <iostream>using namespace std;class Solution {public:    int numTrees(int n) {        if(n==1 || n==2){            return n;        }        if(n == 0){            return 1;        }        int result = 0;        if(n%2 == 1){            result += numTrees((n-1)/2)*numTrees((n-1)/2);            for(int i=(n-1)/2+1 ; i<=n-2 ; i++){                result += 2*numTrees(i)*numTrees(n-1-i);            }            result += 2*numTrees(n-1);        }        else{            for(int i=n/2 ; i<=n-2 ; i++){                result += 2*numTrees(i)*numTrees(n-1-i);            }            result += 2*numTrees(n-1);        }        return result;    }};int main(){    Solution A;    cout << A.numTrees(3) << endl;    return 0;}


0 0