All Possible Full Binary Trees
MediumDynamic ProgrammingTreeRecursionMemoizationBinary Tree
Solution
import { TreeNode } from '@algorithm/lib';
export function allPossibleFBT(n: number): Array<TreeNode | null> {
if (n % 2 === 0) {
return [];
}
if (n === 1) {
return [new TreeNode(0)];
}
const answer = new Array<TreeNode | null>();
for (let i = 1; i < n; i += 2) {
for (const leftNode of allPossibleFBT(i)) {
for (const rightNode of allPossibleFBT(n - 1 - i)) {
const rootNode = new TreeNode(0, leftNode, rightNode);
answer.push(rootNode);
}
}
}
return answer;
}