In BST, each node is larger than every nodes in its left sub-tree and smaller than every nodes in its right sub-tree. We should use every valid integer as root node and create BST recursively.
# 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 helper(left, right):
if left == right:
return [TreeNode(val=left)]
elif left > right:
return [None]
else:
return [TreeNode(val=pivot, left=l, right=r) for pivot in range(left, right+1) for l in helper(left, pivot - 1) for r in helper(pivot+1, right)]
return helper(1, n)
Edited on 09/02/2021. Update a simpler solution.
No comments:
Post a Comment