码迷,mamicode.com
首页 > 其他好文 > 详细

【LeetCode】96.Unique Binary Search Trees

时间:2015-05-06 21:02:41      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

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

 

Hide Tags
 Tree Dynamic Programming
 

新建一个数组为UniqueTrees[n],对应数组元素为i个节点对应的二叉查找树的数目。取一个数为根节点,比其小的数有p个,比其大的数有q个,则以此为根节点的数对应的二叉查找树有p*q个

UniqueTrees[0]=1;UniqueTrees[1]=1;UniqueTrees[2]=UniqueTrees[0]*UniqueTrees[1]+UniqueTrees[1]*UniqueTrees[0];

观察可得递推公式为UniqueTrees[i] = ∑ UniqueTrees[0...k] * [i-1-k]     k取值范围 0<= k <=(i-1)

 
 1 class Solution {
 2 public:
 3     int numTrees(int n) {
 4         if (0 == n || 1 == n)
 5             return 1;
 6         if (2 == n)
 7             return 2;
 8         // 此时n>=3,可以递归的
 9         int UniqueTrees[n] ={1,1,2};
10         for (int i = 3; i <= n; i++)
11         {
12             UniqueTrees[i] = 0;
13             for (int j = 0; j < i; j++)
14             {
15                 UniqueTrees[i] += UniqueTrees[j] * UniqueTrees[i-1-j];
16             }
17         }
18         return UniqueTrees[n];
19     }
20 };
19 / 19 test cases passed.
Status: 

Accepted

Runtime: 1 ms
Submitted: 0 minutes ago

WA过一次,当时未加UniqueTrees[i] = 0;关于数组的初始化补充于其下:

1、首先数组初始化的维度必须是一个常数,这个经常会遇到,比如int cnt = 2; int bad[cnt];这是会报错的。如果是const int cnt = 2;就不会。

2、对于的数组的初始化,如果没有显式提供元素初值,则数组元素会像普通变量一样初始化:

  1. 在函数体外定义的内置数组,其元素均初始化为 0;
  2. 在函数体内定义的内置数组,其元素无初始化;
  3. 不管数组在哪里定义,如果其元素为类类型,则自动调用该类的默认构造函数进行初始化;
  4. 如果该类没有默认构造函数,则必须为该数组的元素提供显式初始化。

3、显示初始化,即可以对数组元素进行列表初始化,此时允许忽略数组的维度,编译器会计算并推测。如果维度比提供的初始值数量大,则用提供的的初始值初始化考前的元素,剩下的元素被初始化成默认值。

e.g int a[5] = {1,2}; // 等价为a[5]={1,2,0,0,0};

我原本就是这样想的,所以就没有加UniqueTrees[i] = 0;这里的问题是默认初始化即无初始化,所以要多多注意这个初始化这个问题,多写一句。

【LeetCode】96.Unique Binary Search Trees

标签:

原文地址:http://www.cnblogs.com/helloWaston/p/4483047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!