整数nは、1 ... nは二分探索木のノードに求めている、何を考えますか?

class Solution {

    public int numTrees(int n) {
        return buildTree(0, n - 1);

    }

    private int buildTree(int start, int end) {
        if (start > end) {
            return 1;
        }
        int result = 0;
        for (int i = start; i <= end; i++) { // i is root
            int left = buildTree(start, i - 1);
            int right = buildTree(i + 1, end);
            result = result + left * right;
        }
        return result;

    }

    public static void main(String[] args) {
        Solution solution=new Solution();
        System.out.println(solution.numTrees(4));
    }
}

class Solution {

    public int numTrees(int n) {
        int fun[] = new int[n + 1];
        fun[0] = 1;
        fun[1] = 1;
        for (int i = 2; i <= n; i++) {
            for (int j = 0; j <= i - 1; j++) {
                fun[i]=fun[i]+fun[j]*fun[i-1-j];
            }
        }
        return fun[n];

    }

    public static void main(String[] args) {
        Solution solution=new Solution();
        System.out.println(solution.numTrees(3));
    }


}
公開された184元の記事 ウォン称賛19 ビュー130 000 +

おすすめ

転載: blog.csdn.net/zhoumingsong123/article/details/104922907