894. All Possible Full Binary Trees

Difficulty:
Related Topics:
Similar Questions:

    Problem

    Given an integer n, return **a list of all possible *full binary trees* with** n nodes. Each node of each tree in the answer must have Node.val == 0.

    Each element of the answer is the root node of one possible tree. You may return the final list of trees in any order.

    A full binary tree is a binary tree where each node has exactly 0 or 2 children.

      Example 1:

    Input: n = 7
    Output: [[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]]
    

    Example 2:

    Input: n = 3
    Output: [[0,0,0]]
    

      Constraints:

    Solution

    /**
     * Definition for a binary tree node.
     * function TreeNode(val, left, right) {
     *     this.val = (val===undefined ? 0 : val)
     *     this.left = (left===undefined ? null : left)
     *     this.right = (right===undefined ? null : right)
     * }
     */
    /**
     * @param {number} n
     * @return {TreeNode[]}
     */
    var allPossibleFBT = function(n) {
        var dp = Array(n);
        dp[0] = [new TreeNode()];
        return solve(n, dp);
    };
    
    var solve = function(n, dp) {
        if (dp[n - 1]) return dp[n - 1];
        var res = [];
        for (var i = 1; i < n - 1; i += 2) {
            var left = solve(i, dp);
            var right = solve(n - 1 - i, dp);
            for (var j = 0; j < left.length; j++) {
                for (var m = 0; m < right.length; m++) {
                    res.push(new TreeNode(0, left[j], right[m]));
                }
            }
        }
        dp[n - 1] = res;
        return res;
    };
    

    Explain:

    Bottom-up with dynamic programming.

    Complexity:

    pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy