您的位置:首页 > 产品设计 > UI/UE

Leetcode: Unique Binary Search Trees

2014-09-28 05:36 501 查看
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


Let C(n) be the number of distinct binary trees with n nodes. This is equal to the number of trees that have a root, a left subtree with j nodes, and a right subtree of (n-1)-j nodes,
for each j. That is,
C(n) = C(0)C(n-1) + C(1)C(n-2) + ... + C(n-1)C(0)


which is



The first few terms:
C(0) = 1
C(1) = C(0)C(0) = 1
C(2) = C(0)C(1) + C(1)C(0) = 2
C(3) = C(0)C(2) + C(1)C(1) + C(2)C(0) = 5
C(4) = C(0)C(3) + C(1)C(2) + C(2)C(1) + C(3)C(0) = 14


public class Solution {
public int numTrees(int n) {
int[] count = new int[n + 1];
count[0] = 1;
count[1] = 1;

for (int i = 2; i <= n; i++) {
for (int j = 0; j < i; j++) {
count[i] += count[j] * count[i - j - 1];
}
}

return count
;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode