96. Unique Binary Search Trees
来源:互联网 发布:遗传算法实现代码 编辑:程序博客网 时间:2024/06/07 03:08
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
给定一个序列1~n,为了构造二叉树,我们可以使用1~n中的第 i 个节点作为根节点,则根据二叉排序树的性质,1~n-1必在左子树,n+1~n在右子树;
f(0)= 1;
f(1) = 1;
f(2) = f(1) * f(0) + f(0) * f(1);
以第 i 个节点作为根节点有f(i - 1) * f( n - 1 - i)中二叉排序树的可能;
则f(n) = f(0) * f(n - 1) + f(1) * f(n-2)+…+f(n-1) * f(0)
思路1:用一个二重循环
int numTrees(int n) { if (n == 0)return 0; if (n == 1)return 1; vector<int> res(n + 1, 0); res[0] = 1, res[1] = 1; for (int i = 2; i <= n; i++){ for (int j = 1; j <= i; j++){ res[i] += res[j - 1] * res[i - j]; } } return res[n];}
思路2:递归
int numTrees(int n) { if (n == 0 || n == 1)return 1; int res = 0; for (int i = 0; i < n; i++){ res += numTrees(i) * numTrees(n - i - 1); } return res;}
思路3:数学公式直接求解
int numTrees(int n) { if (n == 0)return 0; if (n == 1)return 1; vector<long>res(n + 1, 0); res[0] = 1, res[1] = 1; for (int i = 1; i < n; i++){ res[i + 1] = 2 * (2 * i + 1) *res[i] / (i + 2); } return res[n];}
阅读全文
0 0
- 96.Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- 96. Unique Binary Search Trees
- Nginx 配置静态web服务器
- (搬运).net起步 (身份验证机制 membership 项目演练)
- linux查看进程与线程信息(pstree pstack jstack)
- HTML系列之嵌入式 (五)
- 同时安装python2和python3,出现fatal error in launcher: unable to create process using‘’‘’错误
- 96. Unique Binary Search Trees
- 归并排序
- 京东量化小馒头之pandas库常用函数汇总
- 贪心之多机调度问题
- EL
- 程序调试优化一:浏览器端查看、抓取后台返回数据的方法
- 暴力拆解《Numerical Optimization》之线搜索
- Idea破解
- RabbitMQ的元数据重建