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.
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,
which is
The first few terms:
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
;
}
}
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 96 — Unique Binary Search Trees(C++ Java Python)
- [Leetcode] Unique Binary Search Trees
- Leetcode 95. Unique Binary Search Trees II及二叉树最大最小深度镜像树总结
- LeetCode | Unique Binary Search Trees(二叉搜索树的个数)
- Unique Binary Search Trees (leetcode)
- [LeetCode] Unique Binary Search Trees II
- leetcode || 96、Unique Binary Search Trees
- LeetCode Unique Binary Search Trees
- LeetCode--Unique Binary Search Trees II
- [LeetCode] Unique Binary Search Trees
- leetcode Unique Binary Search Trees II
- 《leetCode》:Unique Binary Search Trees
- leetcode之Unique Binary Search Trees
- LeetCode No.96 Unique Binary Search Trees
- [leetcode] Unique Binary Search Trees II
- [Leetcode]Unique Binary Search Trees
- Leetcode:unique_binary_search_trees
- LeetCode96_Unique Binary Search Trees(求1到n这些节点能够组成多少种不同的二叉查找树) Java题解
- [LeetCode] Unique Binary Search Trees II
- LeetCode-Unique Binary Search Trees