Unique Binary Tree
来源:互联网 发布:王麟 知乎什么回事 编辑:程序博客网 时间:2024/05/20 05:25
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
对于本题中的BST(二分搜索树)的定义:
对于任一个节点(root 父节点),其左子树小于root,右子树大于root。
因此我们要做的就是找出相应的规律:
对于n=0时,f(0)=1;即是空树
n=1时,f(1)=1;即是只有一个节点的树;
对于n=2,我们可以分析1,2分别作为root 时的树的个数的和,
比如,以1为根的树的个数,等于左子树的个数乘以右子树的个数,左子树是0个元素的树,
右子树是2个元素的树。以2为根的树的个数,等于左子树的个数乘以右子树的个数,
左子树是1个元素的树,右子树也是1个元素的树。依此类推
所以;f(2)=f(0)*f(1)+f(1)*f(0);
f(3)=f(0)*f(2)+f(1)*f(1)+f(2)*f(0)
.............观察可得:
所以程序如下:
# include <iostream># include <vector>using namespace std;class Solution{public:int TreeNum(int n){vector<int>f(n + 1, 0);f[0] = 1;f[1] = 1;for (int i = 2; i <= n; i++){for (int k = 1; k <= i; k++)f[i] += f[k - 1] * f[i - k];}return f[n];}};int main(){Solution s1;int n;cout << "请输入整数n: ";cin >> n;cout << s1.TreeNum(n) << endl;system("pause");return 0;}
0 0
- Unique Binary Search Tree
- Unique Binary Search Tree
- unique Binary Tree
- Unique Binary Tree
- [LeetCode] Unique Binary Search Tree
- LeetCode : Unique Binary Search Tree
- 【LeetCode】Unique Binary Search Tree
- [Leetcode]Unique binary search tree
- Unique Binary Search Tree -- LeetCode
- Unique Binary Search Tree II
- Leetcode: Unique Binary Search Tree II
- LeetCode 96: Unique Binary Search Tree
- Leetcode - Tree /Dynamic Programming- Unique Binary Search
- Leetcode练习- Unique Binary Search Tree
- leetcode java unique binary search tree
- 【Leetcode】Unique Binary Search Tree II (DP)
- 【Leetcode】Unique Binary Search Tree in JAVA
- leetcode-unique binary search tree II
- 关于javascript中的return
- 使用hive查询把访问网络流量会话化
- 计算及清除缓存类
- Laravel核心---IoC 容器
- Activity 与 Service 之间的通信
- Unique Binary Tree
- k8s的keepalived学习
- awk使用 模式总结
- BZOJ 1209: [HNOI2004]最佳包裹
- [随笔]Linux下,如何将一个文件及其所在的递归路径一起拷贝到目标目录?
- python 安装scikit-learn库
- 一天一个linux命令,这篇文章不错,大家可以看看
- 第一讲:开发环境与工具篇
- 标签云 tagCloud 简单实现原理(还算好看)