zoukankan      html  css  js  c++  java
  • LeetCode

    题目:

    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
    

    思路:

    仍和Unique Binary Search Trees的思路一样,确定左右树。

    package bst;
    
    import java.util.ArrayList;
    import java.util.List;
    
    class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) { val = x; }
    }
    
    public class UniqueBinarySearchTreesII {
    
        public List<TreeNode> generateTrees(int n) {
            List<TreeNode> res = new ArrayList<TreeNode>();
            if (n <= 0) return res;
            return generateTrees(1, n);
        }
        
        private List<TreeNode> generateTrees(int left, int right) {
            List<TreeNode> roots = new ArrayList<TreeNode>();
            if (left > right || left <= 0 || right <= 0) {
                roots.add(null);
            } else if (left == right) {
                TreeNode root = new TreeNode(left);
                roots.add(root);
            } else {
                for (int i = left; i <= right; ++i) {
                    List<TreeNode> leftTree = generateTrees(left, i - 1);
                    List<TreeNode> rightTree = generateTrees(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);
                            roots.add(root);
                        }
                    }
                }
            }
            
            return roots;        
        }
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            UniqueBinarySearchTreesII u = new UniqueBinarySearchTreesII();
            u.generateTrees(3);
        }
    
    }
  • 相关阅读:
    ABAP实现屏幕自己刷新和跳转功能
    SAP 邮件发送
    MIRO做发票校验时实现替代功能的多种方式
    SAP资产折旧,消息编号AA687:在上一年结算之后您只能记帐到新的一年
    SAP 月结F.19与GR/IR
    ABAP字符串的加密与解密
    ABAP DEBUG
    NUMBER_GET_NEXT
    OO ALV 学习参考
    Crontab定时任务配置
  • 原文地址:https://www.cnblogs.com/null00/p/5116579.html
Copyright © 2011-2022 走看看