leetcode:Unique Binary Search Trees

来源:互联网 发布:linux 安装 tomcat 编辑:程序博客网 时间:2024/05/16 16:04


给出数字n,表示1......n,

问由这些数字可以组成多少种不同的二叉树

直接给出递推式子

ans[i]表示数字i可以组成ans[i]中不同的二叉树

那么 ans[i] = sum(ans[i-j] * [j])  1<=j<=i

public class Solution {    public int numTrees(int n) {        int size = 35;        int[] ans = new int[size];        Arrays.fill(ans, 0);        ans[0] = ans[1] = 1;        ans[2] = 2;        for(int i = 3; i < ans.length; ++i){            for(int j = 0; j < i; ++j){                ans[i] += ans[j] * ans[i - 1 - j];            }        }        return ans[n];    }}


0 0
原创粉丝点击