LeetCode 96 — Unique Binary Search Trees(C++ Java Python)
来源:互联网 发布:数据整理工具 编辑:程序博客网 时间:2024/06/05 00:59
题目:http://oj.leetcode.com/problems/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
题目翻译:
给定n,有多少种结构独特的值为1...n的BST(二叉查找树)?
例如,
给定n = 3,共有5种独特的BST。
自底向上。对于i个节点的情况,将第j个节点作为根节点,则左子树有j-1个节点,右子树有i-j个节点,左右子树不同BST种数相乘即得到j为根节点时的总数,对j从1到i求和,即得到i个节点不同BST的总数。
另外这是一种Catalan数,公式为。
C++实现:class Solution {public: int numTrees(int n) { vector<int> num(n + 1, 0); 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]; }};Java实现:
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]; }}Python实现:
class Solution: # @return an integer def numTrees(self, n): num = [0 for i in range(n + 1)] num[0] = 1 num[1] = 1 for i in range(2, n + 1): for j in range(1, i + 1): num[i] += num[j - 1] * num[i - j] return num[n]感谢阅读,欢迎评论!
0 0
- LeetCode 96 — Unique Binary Search Trees(C++ Java Python)
- [leetcode-96]Unique Binary Search Trees(c++)
- leetcode 96 c++. Unique Binary Search Trees
- LeetCode(96) Unique Binary Search Trees
- LeetCode(96) Unique Binary Search Trees
- 【LeetCode with Python】 Unique Binary Search Trees
- 【LeetCode】【Python题解】Unique Binary Search Trees
- Unique Binary Search Trees II Leetcode Python
- 【Leetcode】【python】Unique Binary Search Trees
- 【Leetcode】【python】Unique Binary Search Trees II
- [C++]LeetCode: 53 Unique Binary Search Trees
- 【C++】【LeetCode】96. Unique Binary Search Trees
- [Leetcode] Unique Binary Search Trees (Java)
- [Leetcode] Unique Binary Search Trees II (Java)
- leetcode Unique Binary Search Trees II java
- [LeetCode][Java] Unique Binary Search Trees
- [LeetCode][Java]Unique Binary Search Trees II
- leetcode-java-96. Unique Binary Search Trees
- linux进程task_struct结构体中的state域
- hdu2870暴力或者dp优化
- C++ 中的处理类型
- linux 性能监控常用命令
- NYOJ46最少乘法次数
- LeetCode 96 — Unique Binary Search Trees(C++ Java Python)
- 第三周作业循环与判断语句LeapYear
- CSDN的博客搜索功能太弱,教你怎么搜索自己博客的文章
- ASP.NET—009:前台传值的另一种方式$.post
- 黑马程序员09_类加载器
- Shared Library in X86/ARM
- 《Windows核心编程系列》十一谈谈Windows线程池
- listview因高度问题,重复调用getView
- android Bitmap学习总结