当前位置:编程学习 > JAVA >>

Unique Binary Search Trees @LeetCode

package Level3;

/**
 * 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
 *
 */
public class S96 {

	public static void main(String[] args) {
		System.out.println(numTrees(3));
	}

	// 递归公式cnt[i] = sum(cnt[0]*cnt[i-1], cnt[1]*cnt[i-2], cnt[2]*cnt[i-3], ..., cnt[i-1]*cnt[0])
	public static int numTrees(int n) {
        int[] cnt = new int[n+1];
        cnt[0] = 1;
        cnt[1] = 1;
        for(int i=2; i<=n; i++){
        	for(int j=0; j<=i-1; j++){
        		cnt[i] += cnt[j] * cnt[i-1-j];
        	}
        }
        
        return cnt[n];
    }
	
}

 

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,