leetcode刷题96
Unique Binary Search Trees
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为0时,有一个空树,n为1时,有一种树,n为2时,有两种树的排法。按照这个基础,根节点为1的时候,将2,3作为只有2个节点的子树,有2种排法,然后做乘法得到1为节点时共有多少种排法。一次类推,分别拿2做节点,3做节点。我是这么想的,,但代码有点出入,,也说不太清楚。。
class Solution {
public:
int numTrees(int n) {
int array[n + 1];
array[0] = 1;
array[1] = 1;
array[2] = 2;
int i, j;
int temp = 0;
for (i = 3; i <= n; ++i)
{
temp = 0;
for (j = 0; j < i; ++j)
temp += array[j]*array[i - j - 1];
array[i] = temp;
}
return array[n];
}
};