【每日一题】894. 所有可能的真二叉树-2024.4.2

题目:

894. 所有可能的真二叉树

给你一个整数 n ,请你找出所有可能含 n 个节点的 真二叉树 ,并以列表形式返回。答案中每棵树的每个节点都必须符合 Node.val == 0

答案的每个元素都是一棵真二叉树的根节点。你可以按 任意顺序 返回最终的真二叉树列表**。**

真二叉树 是一类二叉树,树中每个节点恰好有 02 个子节点。

示例 1:

复制代码
输入:n = 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]]

示例 2:

复制代码
输入:n = 3
输出:[[0,0,0]]

提示:

  • 1 <= n <= 20

解答:

代码:

复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<TreeNode> allPossibleFBT(int n) {
        if(n%2==0){
            return new ArrayList<TreeNode>();
        }
        List<TreeNode>[] dp=new List[n+1];
        for(int i=0;i<=n;i++){
            dp[i]=new ArrayList<TreeNode>();
        }
        dp[1].add(new TreeNode(0));
        for(int i=3;i<=n;i+=2){
            for(int j=1;j<i;j+=2){
                for(TreeNode leftSubtree:dp[j]){
                    for(TreeNode rightSubtrees:dp[i-1-j]){
                        TreeNode root=new TreeNode(0,leftSubtree,rightSubtrees);
                        dp[i].add(root);
                    }
                }
            }
        }
        return dp[n];
    }
}

结果:

相关推荐
Pluto_CSND30 分钟前
Java中的静态代理与动态代理(Proxy.newProxyInstance)
java·开发语言
百***46451 小时前
Java进阶-在Ubuntu上部署SpringBoot应用
java·spring boot·ubuntu
serve the people2 小时前
Prompts for Chat Models in LangChain
java·linux·langchain
一叶飘零_sweeeet2 小时前
不止于 API 调用:解锁 Java 工具类设计的三重境界 —— 可复用性、线程安全与性能优化
java·工具类
cynicme3 小时前
力扣3228——将 1 移动到末尾的最大操作次数
算法·leetcode
熬了夜的程序员3 小时前
【LeetCode】109. 有序链表转换二叉搜索树
数据结构·算法·leetcode·链表·职场和发展·深度优先
随意起个昵称3 小时前
【递归】二进制字符串中的第K位
c++·算法
mjhcsp4 小时前
C++ 循环结构:控制程序重复执行的核心机制
开发语言·c++·算法
立志成为大牛的小牛4 小时前
数据结构——四十一、分块查找(索引顺序查找)(王道408)
数据结构·学习·程序人生·考研·算法
A阳俊yi4 小时前
Spring Data JPA
java·开发语言