题目:原题链接(中等)
标签:树、二叉树、递归
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | : 其中A为最终结果的数量 | 76ms (57.38%) | |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一:
class Solution:
def generateTrees(self, n: int) -> List[TreeNode]:
def recursor(start, end):
# 处理没有根节点的情况
if start > end:
return [None]
# 处理只剩一个根节点的情况
elif start == end:
return [TreeNode(start)]
# 处理还有多种根节点的情况
ans = []
for i in range(start, end + 1):
left_trees = recursor(start, i - 1)
right_trees = recursor(i + 1, end)
for left_tree in left_trees:
for right_tree in right_trees:
node = TreeNode(i)
node.left = left_tree
node.right = right_tree
ans.append(node)
return ans
return recursor(1, n) if n else []