96. Unique Binary Search Trees

2019-05-31  本文已影响0人  窝火西决

Given n, how many structurally unique BST's (binary search trees) that store values 1 ... n?

Example:

Input: 3
Output: 5

题目

给定一个整数,表示为节点数目,问能有几种二分搜索树的组合。

思路

没有思路。。。。
看了网上讲解,才知道这个数列叫做卡塔兰数,但是无论知道与否,可以总结一下这个数列的规律。
回到题目,

照此总结出来就是卡特兰数列的递推公式。
所以我们可以整理成代码如下:

代码

public class Solution {
    Map<Integer, Integer> cache= new HashMap<>();//缓存,避免大量重复计算,把算过的存在map里
     public int numTrees(int n) {
         if (cache.containsKey(n)) {
            return cache.get(n);
        }
         int res=0;
         if (n==0) {
             res=1;
            return res;
        }
         for (int i = 0; i <n; i++) {//把每一个数当根节点的可能相加,res就是最后的值
            res=res+numTrees(i)*numTrees(n-1-i);
        }
         cache.put(n,res);
        return res;
        }
    @Test
    public void test1() {
        System.out.println(numTrees(5));
    }

}
上一篇 下一篇

猜你喜欢

热点阅读