[Leetcode]Unique Binary Search Trees

mac2022-06-30  22

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

简单动态规划。判别每个左右子树各有多少种情况,然后相乘就可以了,而且是BST,注意这条件就可以解了。它的状态转移方程为:

        for j<i:

      a[i]+ = a[j-1]*a[n-j]

 

1 class Solution { 2 public: 3 int numTrees(int n) { 4 int A[n];A[0]=1; 5 for(int i=1;i!=n+1;i++){ 6 A[i] = 0; 7 if(i<3) 8 A[i]=i; 9 else{ 10 for(int j=1;j!=i+1;j++) 11 A[i]+=A[j-1]*A[i-j]; 12 } 13 } 14 return A[n]; 15 } 16 };

 

你问我有没有更快的解,我会告诉你当然有啦,我们把状态转移方程展开来:

a[i] = a[0]a[i-1]+a[1]a[i-2]+……+a[i-1]a[0];

看出来了吧,这个式子就是卡特兰数的递推式,所以直接带结果就可以了。(但是会溢出。。。笑)

 

转载于:https://www.cnblogs.com/desp/p/4334062.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)