• [LeetCode]: 96: Unique Binary Search Trees


    题目:

    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
    

    分析:

    这个题需要采用动态规划的思想,即:最终解只有部分解逐一累加完成的。基于这个思路再看看本题的分析

    当节点数为0的时候,返回0个解

    当节点数为1的时候,返回1个解

    当节点数为2的时候,返回2个解

    当节点数为3的时候,返回5个解,如上图。包括1为顶点的两种解,2为顶点的1种解和3为顶点的2种解。

    当节点数为4的时候,返回15个解,包括当1为顶点的5中解,2为顶点的2种解,3为顶点的2种解和4为顶点的5种解。

    由此可见关于平衡二叉树子树的情况:

        - 某一个点为顶点的时候,子树的个数为:左子树的个数乘以右子树的个数。

        - 多个点的构成的平衡二叉树的个数应该为:其中每一个点作为顶点时其子树的个数 的和。

    本题目最简便的方法是节点数从小到大依次计算,节点多的时候,将节点划分成几个小的节点组合,采用之前计算的结果

    代码如下:

        public static int numTrees(int n) {
            switch(n){
                case 0:
                    return 0; 
                case 1:
                    return 1;
                case 2:
                    return 2;
                default:
                    int[] arrResult = new int[n+1];
                    arrResult[0] = 1;  // 零个节点时候,子树应该为零,但是为了后面左右子树相乘的计算方便,在此强置为1
                    arrResult[1] = 1;
                    arrResult[2] = 2;
                    
                    for(int i = 3;i<=n;i++){  //3个节点开始采用动态规划的方法
                        int intResultTemp = 0;
                        for(int j = 0 ; j<i;j++ ){
                            intResultTemp = intResultTemp + (arrResult[j]*arrResult[i-j-1]);   //左子树数目乘以右子树数目
                        }
                        arrResult[i] = intResultTemp;
                    }
                    return arrResult[n];          
             }
        }
  • 相关阅读:
    各位AS3各种验证在这里,邮箱 身份证 ...
    各位同学还在为AS3在IE透明模式下弹出新窗口而烦恼吗?
    Flash As3 通过二进制[ByteArray]判断真实的文件类型
    【A8笔记1】Alternativa 8.5.0 在Flash、Fb、Fd中的配置
    超酷光带效果
    flash 墙
    A3D CoverFlow图片展示效果
    Windows8Metro模式IE10放弃Flash的支持
    html5 控件整理
    AS3中JSON的基本应用实例
  • 原文地址:https://www.cnblogs.com/savageclc26/p/4859065.html
Copyright © 2020-2023  润新知