1. 程式人生 > >96. Unique Binary Search Trees

96. Unique Binary Search Trees

rally des store 都在 values total nodes 問題 struct

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

For example,
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

對1-n組成的BST,如果選定i為根,那1-(i-1)都在根的左子樹裏,(i+1)-n都在根的右子樹裏,轉換為dp問題。

public class Solution {
    public int numTrees(int n) {
        int[] dp = new int[n + 1];
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 2; i <= n; i++) { // i: number of nodes
            for (int j = 0; j < i; j++) { // j: the index of root
                dp[i] += dp[j] * dp[i - 1 - j];
            }
        }
        return dp[n];
    }
}

96. Unique Binary Search Trees