Great session, and ready to move on to recursion II. With JS code for the last challenge.
var generateTrees = function(n) {
    return gtHelper(1, n);
};



function gtHelper(start, end, allTrees) {
    const curTrees = []
    if (start > end) {
        curTrees.push(null);
        return curTrees;
    }
    
    for (let i = start; i <= end; i++) {
        const leftTrees = gtHelper(start, i - 1);
        const rightTrees = gtHelper(i + 1, end);
        for (let l of leftTrees) {
            for (let r of rightTrees) {
               const curRoot = new TreeNode(i);
                curRoot.left = l;
                curRoot.right = r;
                curTrees.push(curRoot);
            }   
        }
    }
    return curTrees
}
Comments (0)