LeetCode - Unique Binary Search Trees

来源:互联网 发布:关于所有淘宝软件 编辑:程序博客网 时间:2024/06/06 12:58

题目描述:

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


对于包含i个节点的BST,可以以任意节点j作为根,这时它的左子树和右子树分别有j和i-j-1个节点,从而可以得到递推关系v[i]+=v[j]*v[i-j-1],从i=0开始依次求出v[i],返回v[n]即可。

class Solution {public:    int numTrees(int n) {int v[n+1]={0};v[0]=1;v[1]=1;for(int i=2;i<=n;i++){for(int j=0;j<=(i-1);j++){v[i]+=v[j]*v[i-j-1];}}        return v[n];    }};


0 0