关于科技园区建设文章的网站,设计上海2020,平顶山网站制作哪家公司好,软件开发专业需要学什么给你一个整数 n #xff0c;请你找出所有可能含 n 个节点的 真二叉树 #xff0c;并以列表形式返回。答案中每棵树的每个节点都必须符合 Node.val 0 。
答案的每个元素都是一棵真二叉树的根节点。你可以按 任意顺序 返回最终的真二叉树列表。
真二叉树 是一类二叉树#…给你一个整数 n 请你找出所有可能含 n 个节点的 真二叉树 并以列表形式返回。答案中每棵树的每个节点都必须符合 Node.val 0 。
答案的每个元素都是一棵真二叉树的根节点。你可以按 任意顺序 返回最终的真二叉树列表。
真二叉树 是一类二叉树树中每个节点恰好有 0 或 2 个子节点。
示例 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
问题简要描述返回所有真二叉树
Java
/*** 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 {ListTreeNode[] f; public ListTreeNode allPossibleFBT(int n) {f new List[n 1];return dfs(n);}ListTreeNode dfs(int n) {if (f[n] ! null) {return f[n];}if (n 1) {return List.of(new TreeNode());}ListTreeNode ans new ArrayList();for (int i 0; i n - 1; i) {int j n - 1 - i;for (TreeNode left : dfs(i)) {for (TreeNode right : dfs(j)) {ans.add(new TreeNode(0, left, right));}}}return f[n] ans;}
} Python3
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val0, leftNone, rightNone):
# self.val val
# self.left left
# self.right right
class Solution:def allPossibleFBT(self, n: int) - List[Optional[TreeNode]]:cachedef dfs(n: int) - List[Optional[TreeNode]]:if n 1:return [TreeNode()]ans []for i in range(n - 1):j n - 1 - ifor left in dfs(i):for right in dfs(j):ans.append(TreeNode(0, left, right))return ansreturn dfs(n)
TypeScript
/*** Definition for a binary tree node.* class TreeNode {* val: number* left: TreeNode | null* right: TreeNode | null* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefined ? null : right)* }* }*/function allPossibleFBT(n: number): ArrayTreeNode | null {const f: ArrayArrayTreeNode | null Array.from({length: n 1}, () []);const dfs (n: number): ArrayTreeNode | null {if (f[n].length) {return f[n];}if (n 1) {f[n].push(new TreeNode(0));return f[n];}const ans: ArrayTreeNode | null [];for (let i 0; i n - 1; i) {let j n - 1 - i;for (const left of dfs(i)) {for (const right of dfs(j)) {ans.push(new TreeNode(0, left, right));}}}return (f[n] ans);}return dfs(n);
};