Given n, generate all structurally unique BST's (binary search trees) that store values 1 ... n.
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
/*** Definition of TreeNode: * public class TreeNode {* public int val; * Public TreeNode left, right; * p Ublic TreeNode (int val) {* This.val = val; * This.left = This.right = null; *} *}*/ Public classSolution {/*** @paramn N:an integer *@return: A List of root*/ PublicList<treenode> Generatetrees (intN) {//Write your code here returnGenerate (1, N); } PublicList<treenode> Generate (intLeftintRight ) {List<TreeNode> res=NewArraylist<treenode>(); if(left>Right ) {Res.add (NULL); returnRes; } for(inti=left;i<=right;i++) {List<TreeNode> lefts= Generate (left,i-1); List<TreeNode> rights= Generate (i+1, right); for(intJ=0;j<lefts.size (); j + +) { for(intK=0;k<rights.size (); k++) {TreeNode root=NewTreeNode (i); Root.left=Lefts.get (j); Root.right=Rights.get (k); Res.add (root); } } } returnRes; }}
Unique Binary Search Trees II