糖逗 发表于 2020-12-23 16:13:35

C++刷LeetCode(894. 所有可能的满二叉树)【树】【递归】【数学】

题目描述:
满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。

返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。

答案中每个树的每个结点都必须有 node.val=0。

你可以按任何顺序返回树的最终列表。

 

示例:

输入:7
输出:[,,,,]
解释:

 

提示:

1 <= N <= 20

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/all-possible-full-binary-trees
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


class Solution {
public:
    vector<TreeNode*> allPossibleFBT(int N) {
      vector<TreeNode*>res;
      if(N == 0 || N % 2 == 0)return res;
      else if(N == 1){
            TreeNode* node = new TreeNode(0);
            res.push_back(node);
            return res;
      }
      for(int i = 1; i < N - 1; 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;
                  root -> right = right;
                  res.push_back(root);
                }
            }
      }
      return res;
    }
};


参考链接:https://leetcode-cn.com/problems/all-possible-full-binary-trees/solution/cban-ben-fu-dai-wan-zheng-de-zhu-shi-by-fuckleetco/

糖逗 发表于 2020-12-23 16:14:55

{:10_312:}
页: [1]
查看完整版本: C++刷LeetCode(894. 所有可能的满二叉树)【树】【递归】【数学】