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
#include <iostream> #include <vector> using namespace std; /* 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. */ /* 查找一个序列中搜索二叉树的种类 其实对于一个序列来说 任何一个值都可以成为二叉树的 根节点 依据这一特性可以判断出一个二叉树的种类数目 那么依据任何一个节点为根 等于左子树种类乘以右子树的种类 */ int NumofBinaryTree(int n) { vector<int> vec(n+1,0); vec[0]=1; vec[1] =1; if(n<0) return 0; int i,k; for(i=2;i<vec.size();i++) { for(k=0;k<i;k++) vec[i] += vec[k]*vec[i-k-1]; } return vec[n]; } int main() { cout<<NumofBinaryTree(3); return 0; }
Unique Binary Search Tree -- LeetCode
原文地址:http://blog.csdn.net/yusiguyuan/article/details/44726595