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; } }
本文系作者 @rinbn 原创发布在 噓だ。未经许可,禁止转载。