File tree 2 files changed +107
-0
lines changed
main/java/com/smlnskgmail/jaman/leetcodejava/medium
test/java/com/smlnskgmail/jaman/leetcodejava/medium
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