vector<TreeNode *> generateTrees(int n) {
return getTree(1, n);
}
vector<TreeNode*> getTree(int start, int end)
{
vector<TreeNode*> curRes;
if (start > end)
{
curRes.push_back(NULL);
return curRes;
}
for (int i = start; i <= end; i++)
{
vector<TreeNode*> left = getTree(start, i-1);
vector<TreeNode*> right = getTree(i+1, end);
for(int l = 0; l < left.size(); l++)
{
for (int r = 0; r < right.size(); r++)
{
TreeNode* root = new TreeNode(i);
root->left = left[l];
root->right = right[r];
curRes.push_back(root);
}
}
}
return curRes;
}Unique Binary Search Trees II [leetcode]
最新推荐文章于 2018-10-22 14:23:38 发布
本文介绍了一种通过递归方式生成所有可能的不同形态的二叉搜索树的方法。该算法采用C++实现,从指定范围内的整数中创建树节点,并确保左子树的值小于根节点而右子树的值大于根节点。
406

被折叠的 条评论
为什么被折叠?



