Skip to content

Latest commit

 

History

History

096. Unique Binary Search Trees

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Description

Given n, how many structurally unique BST's (binary search trees) that store values 1 ... n?

Example

Input: 3
Output: 5
Explanation:
Given n = 3, there are a total of 5 unique BST's:

   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

Solution

class Solution:
    def numTrees(self, n):
        """
        :type n: int
        :rtype: int
        """
        dp = [0 for _ in range(n+1)]
        dp[0] = 1
        dp[1] = 1
        for i in range(2, n+1):
            for j in range(1, i+1):
                dp[i] += dp[j-1] * dp[i-j]
        return dp[n]