Unique Binary Search Trees II

来源:互联网 发布:淘宝资质授权书 编辑:程序博客网 时间:2024/05/07 10:18

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

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

Java代码:

/** * 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 List<TreeNode> generateTrees(int n) {        return generateTree(1,n+1);    }    private List<TreeNode> generateTree(int min, int max){        List<TreeNode> list = new ArrayList<TreeNode>();        // base case        if(min >= max){            TreeNode node = null;            list.add(node);        }        // general case        for(int i = min;i < max;i++){            List<TreeNode> left = generateTree(min,i);            List<TreeNode> right = generateTree(i+1,max);            for(int p = 0;p < left.size();p++){                for(int q = 0;q < right.size();q++){                    TreeNode root = new TreeNode(i);                    root.left = left.get(p);                    root.right = right.get(q);                    list.add(root);                }            }        }        return list;    }}


0 0
原创粉丝点击