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
Java:
1. http://blog.youkuaiyun.com/lilong_dream/article/details/22754969
题目翻译:
给定n,有多少种结构独特的值为1...n的BST(二叉查找树)?
例如,
给定n = 3,共有5种独特的BST。
自底向上。对于i个节点的情况,将第j个节点作为根节点,则左子树有j-1个节点,右子树有i-j个节点,左右子树不同BST种数相乘即得到j为根节点时的总数,对j从1到i求和,即得到i个节点不同BST的总数。
public class Solution {
public int numTrees(int n) {
int[] num = new int[n + 1];
num[0] = 1;
num[1] = 1;
for (int i = 2; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
num[i] += num[j - 1] * num[i - j];
}
}
return num[n];
}
}
2.
http://blog.sina.com.cn/s/blog_71d59f9a01017irg.html
阿三哥有个视频链接,讲这题,讲的很清楚, http://www.youtube.com/watch?v=UfA_v0VmiDg