• Leetcode96. 不同的二叉搜索树


    96. 不同的二叉搜索树

    Difficulty: 中等

    给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?

    示例:

    输入: 3
    输出: 5
    解释:
    给定 n = 3, 一共有 5 种不同结构的二叉搜索树:
    
       1         3     3      2      1
               /     /      /       
         3     2     1      1   3      2
        /     /                        
       2     1         2                 3
    

    Solution

    思路:假设有n个结点,依次以每个结点为根结点,那么每次可以确定一个结点的位置,只要确定剩下n-1个结点位置,那么可以表示为(tree(i)=left*right),即以结点i为根结点的二叉搜索树个数为左子树的组合方式乘上右子树的组合方式。可以发现,n个点可以由n-1个点进行确定。公式表示有(f(i)=g(i-1)*g(m-i),i=1,2,...,m;m=1,2,...,n)其中,f(i)表示以编号为i为根结点的二叉搜索树个数,g(j)表示有j个结点的的树的个数。因为结点总数为m,所以第i个结点的左边有i-1个结点,第i个结点右边有m-i个结点。

    Language: java

    ​class Solution {
        public int numTrees(int n) {
            int[] dp = new int[n+1];
            dp[0] = 1;
            for(int i=1; i<=n; i++){
                for(int j=1; j<=i; j++){
                    dp[i] += dp[j-1] * dp[i-j];
                }
            }
            return dp[n];
        }
    }
    
  • 相关阅读:
    CSS3_02之2D、3D动画
    CSS3_01之选择器、Hack
    css_04之显示、定位
    css_03之文本、浮动
    css_02之盒模型、渐变
    javascript获取非行间样式的方法(可以兼容各个浏览器)
    gulp的用法
    grunt的用法
    grunt
    git用法
  • 原文地址:https://www.cnblogs.com/liuyongyu/p/14444810.html
Copyright © 2020-2023  润新知