Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. class Solution {
  2. // O(n^2) O(n^2)
  3. public List<TreeNode> generateTrees(int n) {
  4. if (n == 0) return new ArrayList<TreeNode>();
  5. return genTree(1, n);
  6. }
  7.  
  8. private List<TreeNode> genTree(int start, int end) {
  9. List<TreeNode> list = new ArrayList<>();
  10.  
  11. if ( start > end ) {
  12. list.add(null);
  13. return list;
  14. }
  15.  
  16. // this part can be ignored
  17. if ( start == end ) {
  18. list.add(new TreeNode(start));
  19. return list;
  20. }
  21.  
  22. List<TreeNode> left, right;
  23. for (int i=start; i<=end; i++) {
  24. left = genTree(start, i-1);
  25. right = genTree(i+1, end);
  26.  
  27. for (TreeNode lnode : left) {
  28. for (TreeNode rnode : right) {
  29. TreeNode root = new TreeNode(i);
  30. root.left = lnode;
  31. root.right = rnode;
  32.  
  33. list.add(root);
  34. }
  35. }
  36. }
  37.  
  38. return list;
  39. }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement