96. Unique Binary Search Trees
- Total Accepted: 98825
- Total Submissions: 252602
- Difficulty: Medium
- Contributors: Admin
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
利用DP思想超时n>=19时,如下代码
public class Solution {
public int numTrees(int n) {
int result = 0;
return getNum(1, n);
}
public int getNum(int start, int end){
int res = 0;
if(start > end){
return 1;
}
for(int i = start; i<= end; i++){
int left = getNum(start, i - 1);
int right = getNum(i + 1, end);
res += left * right;
}
return res;
}
}
利用渣规律的方式,利用循环AC
public class Solution {
public int numTrees(int n) {
if(n == 0)
return 1;
int[] result = new int[n+2];
result[0] = 1;
result[1] = 1;
result[2] = 2;
for(int i = 3; i <= n; i++){
for(int j = 1; j <= i; j ++){
int left = j - 1;
int right = i - j;
result[i] += result[left] * result[right];
}
}
return result[n];
}
}