96. Unique Binary Search Trees

来源:互联网 发布:午夜凶铃 知乎 编辑:程序博客网 时间:2024/06/10 15:21

题目

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。


分析

  • 要求返回一个特定值,即通过观察这种特殊的BST结构,找出规律,找出对应的f[n]值。
  • 以1为根的有两个,有2为根的有一个,以3为根的有两个。
  • 其中以1为根的都只有一个子树有两个元素,
  • 以2为根则是两个子树都有1个元素,
  • 以3为根只有一个子树有两个元素。

f(0)=1;f(1)=1;

f(2)=f(0)*(1)+f(1)*f(0);

f(3)=f(0)*f(2)+f(1)*f(1)+f(2)*f(0)

百度一下


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

加油!


0 0
原创粉丝点击