95. Unique Binary Search Trees II
Description
Given an integer n
, return all the structurally unique BST's (binary search trees), which has exactly n
nodes of unique values from 1
to n
. Return the answer in any order.
Example 1:
Input: n = 3 Output: [[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]
Example 2:
Input: n = 1 Output: [[1]]
Constraints:
1 <= n <= 8
Solution
unique-binary-search-trees-ii.py
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def generateTrees(self, n: int) -> List[Optional[TreeNode]]:
def generate(start, end):
res = []
if start > end:
res.append(None)
for index in range(start, end + 1):
left = generate(start, index - 1)
right = generate(index + 1, end)
for l in left:
for r in right:
node = TreeNode(index, l, r)
res.append(node)
return res
return generate(1, n)