zoukankan      html  css  js  c++  java
  • LeetCode | Unique Binary Search Trees II

    Given n, generate all structurally unique BST's (binary search trees) that store values 1...n.

    For example, Given n = 3, your program should return all 5 unique BST's shown below.

       1         3     3      2      1
               /     /      /       
         3     2     1      1   3      2
        /     /                        
       2     1         2                 3
    /**
     * Definition for binary tree
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; left = null; right = null; }
     * }
     */
    public class Solution {
    
    	public ArrayList<TreeNode> generateTree(int start, int end) {
    		ArrayList<TreeNode> result = new ArrayList<TreeNode>();
    		if (start > end) {
    			result.add(null);
    			return result;
    		}
    		ArrayList<TreeNode> leftTree = new ArrayList<TreeNode>();
    		ArrayList<TreeNode> rightTree = new ArrayList<TreeNode>();
    		for (int i = start; i <= end; i++) {                //从start到end,选取每一个数尝试构造BST
    			leftTree = generateTree(start, i-1);        //取小于i的数构造i的左子树
    			rightTree = generateTree(i+1, end);         //取大于i的数构造i的右子树,以此来保证i的二叉查找树有序性
    			for (int j = 0; j < leftTree.size(); j++) {
    				for (int k = 0; k < rightTree.size(); k++) {   //取i作为root构造BST,共有num_left*num_right种方式
    					TreeNode curNode = new TreeNode(i + 1);
    					curNode.left = leftTree.get(j);        //left、right是递归得到的root的集合,相当于list的每个节点都是一颗二叉查找树
    					curNode.right = rightTree.get(k);      //将每一种可能的组合,接到当前的root(i)上组成一颗BST
    					result.add(curNode);
    				}
    			}
    		}
    		return result;
    	}
    
    	//主调用函数:返回的List是每一棵树的root的集合,List.length = n的二叉搜索树的个数
    	public ArrayList<TreeNode> generateTrees(int n) {
    		return generateTree(0, n-1);
    	}
    
    }




  • 相关阅读:
    ORM中的事务和锁
    双下划线跨表查询 聚集查询 分组查询 FQ查询
    cookie和session
    多表查询
    单表查询
    ORM
    Djangon之模板
    Django之视图函数
    Django之URL路由系统
    web框架的本质及自定义web框架
  • 原文地址:https://www.cnblogs.com/dosmile/p/6444449.html
Copyright © 2011-2022 走看看