标签:
Given an integer 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
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public List<TreeNode> generateTrees(int n) { 12 if (n == 0) { 13 return new ArrayList<TreeNode>(); 14 } 15 return generate(1, n); 16 } 17 18 private List<TreeNode> generate(int start, int end) { 19 List<TreeNode> result = new ArrayList<>(); 20 if (start > end) { 21 result.add(null); 22 return result; 23 } 24 for (int i = start; i <= end; i++) { 25 List<TreeNode> left = generate(start, i - 1); 26 List<TreeNode> right = generate(i + 1, end); 27 for (TreeNode l : left) { 28 for (TreeNode r : right) { 29 TreeNode root = new TreeNode(i); 30 root.left = l; 31 root.right = r; 32 result.add(root); 33 } 34 } 35 } 36 return result; 37 } 38 }
标签:
原文地址:http://www.cnblogs.com/FLAGyuri/p/5664688.html