LeetCode: Unique Binary Search Trees II

来源:互联网 发布:怎么上架淘宝宝贝 编辑:程序博客网 时间:2024/06/03 14:55

思路:经典递归方法,注意左右子树元素的个数。

code:

class Solution {public:    vector<TreeNode *> solve(vector<int> &num,int start,int n){        vector<TreeNode *> ret;        if(n == 0){            ret.push_back(NULL);            return ret;        }        for(int i = start;i < start + n;i++){            int nLeft = i - start;            int nRight = n - nLeft - 1;                        vector<TreeNode *> leftRet, rightRet;            leftRet = solve(num,start,nLeft);            rightRet = solve(num,i+1,nRight);                for(int j = 0;j < leftRet.size();j++){                                        for(int k = 0;k < rightRet.size();k++){                        TreeNode * root = new TreeNode(num[i]);                        root->left = leftRet[j];                        root->right = rightRet[k];                        ret.push_back(root);                    }                }        }        return ret;    }    vector<TreeNode *> generateTrees(int n) {        vector<int> num(n,0);        for(int i = 0;i <n;i++)            num[i] = i+1;        vector<TreeNode *> ret;        ret = solve(num,0,n);        return ret;    }};


0 0
原创粉丝点击