File tree Expand file tree Collapse file tree 2 files changed +107
-0
lines changed
main/java/com/smlnskgmail/jaman/leetcodejava/medium
test/java/com/smlnskgmail/jaman/leetcodejava/medium Expand file tree Collapse file tree 2 files changed +107
-0
lines changed Original file line number Diff line number Diff line change 1+ package com .smlnskgmail .jaman .leetcodejava .medium ;
2+
3+ import com .smlnskgmail .jaman .leetcodejava .support .TreeNode ;
4+
5+ import java .util .ArrayList ;
6+ import java .util .List ;
7+
8+ // https://leetcode.com/problems/unique-binary-search-trees-ii/
9+ public class UniqueBinarySearchTreesII {
10+
11+ private final int input ;
12+
13+ public UniqueBinarySearchTreesII (int input ) {
14+ this .input = input ;
15+ }
16+
17+ public List <TreeNode > solution () {
18+ return generate (1 , input );
19+ }
20+
21+ private List <TreeNode > generate (int i , int j ) {
22+ List <TreeNode > nodes = new ArrayList <>();
23+ if (i > j ) {
24+ nodes .add (null );
25+ } else {
26+ for (int mid = i ; mid <= j ; mid ++) {
27+ List <TreeNode > left = generate (i , mid - 1 );
28+ List <TreeNode > right = generate (mid + 1 , j );
29+ for (TreeNode l : left ) {
30+ for (TreeNode r : right ) {
31+ TreeNode node = new TreeNode (mid );
32+ node .left = l ;
33+ node .right = r ;
34+ nodes .add (node );
35+ }
36+ }
37+ }
38+ }
39+ return nodes ;
40+ }
41+
42+ }
Original file line number Diff line number Diff line change 1+ package com .smlnskgmail .jaman .leetcodejava .medium ;
2+
3+ import com .smlnskgmail .jaman .leetcodejava .support .TreeNode ;
4+ import org .junit .Test ;
5+
6+ import java .util .List ;
7+
8+ import static org .junit .Assert .assertEquals ;
9+ import static org .junit .Assert .assertTrue ;
10+
11+ public class UniqueBinarySearchTreesIITest {
12+
13+ @ Test
14+ public void defaultTest () {
15+ List <TreeNode > correct = List .of (
16+ new TreeNode (
17+ 1 ,
18+ null ,
19+ new TreeNode (
20+ 2 ,
21+ null ,
22+ new TreeNode (3 )
23+ )
24+ ),
25+ new TreeNode (
26+ 1 ,
27+ null ,
28+ new TreeNode (
29+ 3 ,
30+ new TreeNode (2 ),
31+ null
32+ )
33+ ),
34+ new TreeNode (
35+ 2 ,
36+ new TreeNode (1 ),
37+ new TreeNode (3 )
38+ ),
39+ new TreeNode (
40+ 3 ,
41+ new TreeNode (
42+ 1 ,
43+ null ,
44+ new TreeNode (2 )
45+ ),
46+ null
47+ ),
48+ new TreeNode (
49+ 3 ,
50+ new TreeNode (
51+ 2 ,
52+ new TreeNode (1 ),
53+ null
54+ ),
55+ null
56+ )
57+ );
58+ List <TreeNode > solution = new UniqueBinarySearchTreesII (3 ).solution ();
59+ assertEquals (correct .size (), solution .size ());
60+ for (int i = 0 ; i < correct .size (); i ++) {
61+ assertTrue (TreeNode .areEqual (correct .get (i ), solution .get (i )));
62+ }
63+ }
64+
65+ }
You can’t perform that action at this time.
0 commit comments