Unique Binary Search Trees II (Recursion)

class Solution {
    public List<TreeNode> generateTrees(int n) {
        return genTrees(1,n);
    }

    private List<TreeNode> genTrees(int start, int end) {
        ArrayList<TreeNode> list = new ArrayList<>();
        if(start==end) {
            list.add(new TreeNode(start));
            return list;
        }
        if(start>end){
            list.add(null);
            return list;
        }
        List<TreeNode> left,right;
        for (int i = start; i <= end; i++) {
            left = genTrees(start,i-1);
            right = genTrees(i+1,end);
            for (TreeNode lnode : left) {
                for (TreeNode rnode : right) {
                    TreeNode root = new TreeNode(i);
                    root.left = lnode;
                    root.right = rnode;
                    list.add(root);
                }
            }
        }
        return list;
    }
}

 

本文系作者 @ 原创发布在 噓だ。未经许可,禁止转载。

喜欢()
评论 (0)
热门搜索
37 文章
3 评论
11 喜欢
Top