Unique Binary Search Trees
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 class Solution { 2 public: 3 int numTrees(int n) { 4 int sum = 0; 5 if(n<=1) return 1; 6 for(int i=0;i<n;i++){ 7 sum +=numTrees(i)*numTrees(n-1-i); 8 } 9 return sum; 10 } 11 };
方法二:动态规划(AC)
1 class Solution { 2 public: 3 int numTrees(int n) { 4 int num[n+1]; 5 fill(num,num+n+1,0); 6 num[0] = 1; 7 num[1] = 1; 8 num[2] = 2; 9 for(int i=3; i<=n; i++){ 10 for(int j=1; j<=i; j++) 11 num[i]+=num[j-1]*num[i-j]; 12 13 } 14 return num[n]; 15 } 16 };