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:
# 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 getTrees(self, beg, end):
trees = []
if beg > end:
trees.append(None)
return trees
for i in range(beg, end + 1):
left_subtrees = self.getTrees(beg, i - 1)
right_subtrees = self.getTrees(i + 1, end)
for l in left_subtrees:
for r in right_subtrees:
tree = TreeNode(val = i, left = l, right = r)
trees.append(tree)
return trees
def generateTrees(self, n: int) -> List[Optional[TreeNode]]:
return self.getTrees(1, n)
Top comments (0)