您的位置:首页 > 产品设计 > UI/UE

Unique Binary Search Trees II

2013-10-05 17:03 246 查看
递归。虽然有很多重叠的子问题,但是用DP的话很难表示。。所以用递归也ok,数据集也能过

vector<TreeNode *> generateTrees(int n)
{
return construct(1,n);
}

vector<TreeNode *> construct(int start,int end)
{
vector<TreeNode*> res;
if(start>end)
{
res.push_back(NULL);
return res;
}

for(int i=start;i<=end;i++)
{
vector<TreeNode*> leftTrees = construct(start,i-1);
vector<TreeNode*> rightTrees = construct(i+1,end);
for(int j=0;j<leftTrees.size();j++)
{
for(int k=0;k<rightTrees.size();k++)
{
TreeNode* root = new TreeNode(i);
root->left = leftTrees[j];
root->right = rightTrees[k];
res.push_back(root);
}
}
}
return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: