894. 所有可能的满二叉树
满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。
返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。
答案中每个树的每个结点都必须有 node.val=0。
你可以按任何顺序返回树的最终列表。
链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
function allPossibleFBT(n: number): Array<TreeNode | null> { const memoMap: Record<number, TreeNode[]> = {} function dfs(N: number) { const ans: TreeNode[] = [] if (!memoMap[N]) { if (N === 1) { ans.push(new TreeNode(0)) } else if (N % 2 === 1) { for(let i = 0; i < N; i++) { let y = N - 1 - i for (const left of dfs(i)) { for (const right of dfs(y)) { const b = new TreeNode(0) b.left = left b.right = right ans.push(b) } } } } memoMap[N] = ans } return memoMap[N] } return dfs(n) };
|