所有可能的满二叉树

192 阅读1分钟

满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。 答案中每个树的每个结点都必须有node.val=0。你可以按任何顺序返回树的最终列表。

输入:7
输出:[[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,null,null,null,null,0,0],[0,0,0,0,0,null,null,0,0]]
class Solution{
vector<TreeNode*>temp;
public:
vector<TreeNode*>allPossibleFBT(int N){
vector<TreeNode*>List;
if(N&1==0)
return List;
if(N==1){
List.push_back(new TreeNode(0));
return List;
}
for(int i=1;i<=N-2;i+=2){
vector<TreeNode*>left=allPossibleFBT(i);
vector<TreeNode*>right=allPossibleFBT(N-1-i);
for(int j=0;j<left.size();j++){
for(int k=0;k<right.size();k++){
TreeNode*root=new TreeNode(0);
root->left=left[j];
root->right=right[k];
List.push_back(root);
}
}
}
return List;
}
}