标签:
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个结点产生的二叉查找树的个数为f[n]。
f[0]=1
n个结点的时候
根结点为1,这时有f[0]*f[n-1]种情况
根结点为2,这时有f[1]*f[n-2]种情况
根结点为3,这时有f[2]*f[n-3]种情况
...
根结点为n-1,这时有f[n-2]*f[1]种情况
根结点为n,这时有f[n-1]*f[0]种情况
所以总共有f[n]=f[0]*f[n-1]+f[1]*f[n-2]+f[3]*f[n-3]+...+f[n-3]*f[3]+f[n-2]*f[1]+f[n-1]*f[0]。(n>=2)
代码:
1 class Solution { 2 public: 3 int numTrees(int n) { 4 vector<int> nums(n+1,0); 5 nums[0]=1; 6 int res=1; 7 for(int i=1;i<=n;i++){ 8 for(int j=0;j<i;j++){ 9 nums[i]+=nums[j]*nums[i-1-j]; 10 } 11 } 12 return nums[n]; 13 } 14 };
Leetcode 96. Unique Binary Search Trees
标签:
原文地址:http://www.cnblogs.com/Deribs4/p/5751739.html