LINTCODE——不同的二叉查找树

来源:互联网 发布:牛彩纽约源码 编辑:程序博客网 时间:2024/06/16 17:24

LINTCODE——不同的二叉查找树

思路:找到一般规律迭代就好了,不建议用递归,能用迭代还是迭代好一些;

规律,假设L= n-1 ,R = 0 ; T(0) =1,T(1) =1,对于n>=2,有
T(n) += 2 * T[L–]*T[R++] ,当L==R的时候前面的2去掉就好了;

class Solution {public:    /*     * @param n: An integer     * @return: An integer     */    int numTrees(int n) {        // write your code here        vector<int> num;        num.push_back(1);        num.push_back(1);        int index = num.size() - 1;        while(index < n)        {            int temp = 0;            for(int L = index ,R = 0 ; L >= R ; L-- ,R++)            {                if(L == R )                    temp += num[L]*num[R];                else                    temp += 2*num[L]*num[R];            }            index++;            num.push_back(temp);        }        return num[n];    }};
原创粉丝点击