码迷,mamicode.com
首页 > 其他好文 > 详细

8.4 LeetCode 95, 96 Unique BST I & II

时间:2015-08-05 08:52:16      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:

// 95 return all unique BST roots.
public ArrayList<TreeNode> generateTrees(int n) { // 2nd ans
            // Start typing your Java solution below
            // DO NOT write main() function
            return generateTrees(1,n);
        }
    
public ArrayList<TreeNode> generateTrees(int a, int b){
        ArrayList<TreeNode> res = new ArrayList<TreeNode>();
        
        if(a>b){
            res.add(null);   
        }else if(a==b){
            res.add(new TreeNode(a));
        }else if(a < b){
            for(int i=a;i<=b;i++){
                ArrayList<TreeNode> left = generateTrees(a,i-1); // left subtree
                ArrayList<TreeNode> right = generateTrees(i+1,b); // right subtree
                for(TreeNode l:left)
                    for(TreeNode r:right){
                        TreeNode root = new TreeNode(i);
                        root.left=l;
                        root.right=r;
                        res.add(root);
                }
            }
        } 
        return res;
    }
// return number of Unique BST
public int numTrees(int n) {
       int[] res = new int[n+1]; // notice it is n+1, for res[n] represents the num of unique BST of n nodes.
       res[0] = 1; // 0 node 1 structure
       res[1] = 1; // 1 node 1 structure
       for(int i = 2; i <= n; i++) {
           int sum = 0;
           for(int j = 1; j <= i; j++) {
               int left = i - j;
               int right = j - 1;
               sum += res[left] * res[right];
           }
           res[i] = sum;
       }
       return res[n];
    }

 

8.4 LeetCode 95, 96 Unique BST I & II

标签:

原文地址:http://www.cnblogs.com/michael-du/p/4703685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!