zoukankan      html  css  js  c++  java
  • 95. Unique Binary Search Trees II

    Given an integer 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 a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public List<TreeNode> generateTrees(int n) {
            if(n < 1)
                return new ArrayList<>();
            return generateSubTree(1,n);
        }
        public List<TreeNode> generateSubTree(int left, int right){
            List<TreeNode> res = new ArrayList<TreeNode>();
            if(left > right){
                res.add(null);
                return res;
            }
            for(int i = left; i <= right; i++){
                 List<TreeNode> leftTree = generateSubTree(left, i-1);
                 List<TreeNode> rightTree = generateSubTree(i+1, right);
                 for(int j = 0 ; j < leftTree.size(); j ++){
                     for(int k = 0; k < rightTree.size(); k++){
                         TreeNode root = new TreeNode(i);
                         root.left = leftTree.get(j);
                         root.right = rightTree.get(k);
                         res.add(root);
                     }
                 }
            }
            return res;
                
        }
    }
  • 相关阅读:
    文件的增删改查
    集合的使用
    字典的使用
    字符串常用操作
    简单购物车程序练习题
    列表
    数据运算数据类型与
    模块初识
    数据库时间设置
    ubuntu 修改时区
  • 原文地址:https://www.cnblogs.com/joannacode/p/5947910.html
Copyright © 2011-2022 走看看