zoukankan      html  css  js  c++  java
  • 给定一个正整数n,返回从1到n构成的所有的BST

    public class C3 {
    
        public static void main(String[] args) {
            ArrayList<TreeNode> res = generateTrees(5);
            System.out.println(res);
        }
        
        public static ArrayList<TreeNode> generateTrees(int n) {
            if(n == 0){
                return  new ArrayList<TreeNode>();
            }
            return generateTrees(1, n);//从1作为root开始,到n作为root结束
        }
         
        private static ArrayList<TreeNode> generateTrees(int left, int right){
            ArrayList<TreeNode> res = new ArrayList<TreeNode>();
            if (left > right){
                res.add(null);
                return res;
            }
            for (int i = left; i <= right; i++){
                ArrayList<TreeNode> lefts = generateTrees(left, i-1);     //以i作为根节点,左子树由[1,i-1]构成
                ArrayList<TreeNode> rights = generateTrees(i+1, right);   //右子树由[i+1, n]构成
                for (int j = 0; j < lefts.size(); j++){
                    for (int k = 0; k < rights.size(); k++){
                        TreeNode root = new TreeNode(i);
                        root.left = lefts.get(j);
                        root.right = rights.get(k);
                        res.add(root);//存储所有可能行
                    }
                }
            }
            return  res;
        }
    
        public static class TreeNode {
            TreeNode left;
            TreeNode right;
            int val;
            public TreeNode () {}
            public TreeNode (int val) {
                this.val = val;
            }
        }
    }

  • 相关阅读:
    服务器响应状态码
    30
    29
    Java中参数始终是按值传递
    浅析 Java 中的继承和重写
    25
    super 关键字
    24
    Overriding
    23
  • 原文地址:https://www.cnblogs.com/moris5013/p/9835542.html
Copyright © 2011-2022 走看看