File tree 3 files changed +127
-0
lines changed
solution/0000-0099/0095.Unique Binary Search Trees II
3 files changed +127
-0
lines changed Original file line number Diff line number Diff line change 62
62
63
63
```
64
64
65
+ ### ** TypeScript**
66
+
67
+ ``` ts
68
+ /**
69
+ * Definition for a binary tree node.
70
+ * class TreeNode {
71
+ * val: number
72
+ * left: TreeNode | null
73
+ * right: TreeNode | null
74
+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
75
+ * this.val = (val===undefined ? 0 : val)
76
+ * this.left = (left===undefined ? null : left)
77
+ * this.right = (right===undefined ? null : right)
78
+ * }
79
+ * }
80
+ */
81
+
82
+ function generateTrees(n : number ): Array <TreeNode | null > {
83
+ if (n == 0 ) return [];
84
+ return helper (1 , n );
85
+ };
86
+
87
+ function helper (start : number , end : number ): Array <TreeNode | null > {
88
+ let ans = [];
89
+ if (start > end ) {
90
+ ans .push (null );
91
+ return ans ;
92
+ }
93
+ for (let i = start ; i <= end ; i ++ ) {
94
+ let lefts = helper (start , i - 1 );
95
+ let rights = helper (i + 1 , end );
96
+ for (let left of lefts ) {
97
+ for (let right of rights ) {
98
+ let root = new TreeNode (i );
99
+ root .left = left ;
100
+ root .right = right ;
101
+ ans .push (root );
102
+ }
103
+ }
104
+ }
105
+ return ans ;
106
+ }
107
+ ```
108
+
65
109
### ** ...**
66
110
67
111
```
Original file line number Diff line number Diff line change 45
45
46
46
```
47
47
48
+ ### ** TypeScript**
49
+
50
+ ``` ts
51
+ /**
52
+ * Definition for a binary tree node.
53
+ * class TreeNode {
54
+ * val: number
55
+ * left: TreeNode | null
56
+ * right: TreeNode | null
57
+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
58
+ * this.val = (val===undefined ? 0 : val)
59
+ * this.left = (left===undefined ? null : left)
60
+ * this.right = (right===undefined ? null : right)
61
+ * }
62
+ * }
63
+ */
64
+
65
+ function generateTrees(n : number ): Array <TreeNode | null > {
66
+ if (n == 0 ) return [];
67
+ return helper (1 , n );
68
+ };
69
+
70
+ function helper (start : number , end : number ): Array <TreeNode | null > {
71
+ let ans = [];
72
+ if (start > end ) {
73
+ ans .push (null );
74
+ return ans ;
75
+ }
76
+ for (let i = start ; i <= end ; i ++ ) {
77
+ let lefts = helper (start , i - 1 );
78
+ let rights = helper (i + 1 , end );
79
+ for (let left of lefts ) {
80
+ for (let right of rights ) {
81
+ let root = new TreeNode (i );
82
+ root .left = left ;
83
+ root .right = right ;
84
+ ans .push (root );
85
+ }
86
+ }
87
+ }
88
+ return ans ;
89
+ }
90
+ ```
91
+
48
92
### ** ...**
49
93
50
94
```
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * class TreeNode {
4
+ * val: number
5
+ * left: TreeNode | null
6
+ * right: TreeNode | null
7
+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8
+ * this.val = (val===undefined ? 0 : val)
9
+ * this.left = (left===undefined ? null : left)
10
+ * this.right = (right===undefined ? null : right)
11
+ * }
12
+ * }
13
+ */
14
+
15
+ function generateTrees ( n : number ) : Array < TreeNode | null > {
16
+ if ( n == 0 ) return [ ] ;
17
+ return helper ( 1 , n ) ;
18
+ } ;
19
+
20
+ function helper ( start : number , end : number ) : Array < TreeNode | null > {
21
+ let ans = [ ] ;
22
+ if ( start > end ) {
23
+ ans . push ( null ) ;
24
+ return ans ;
25
+ }
26
+ for ( let i = start ; i <= end ; i ++ ) {
27
+ let lefts = helper ( start , i - 1 ) ;
28
+ let rights = helper ( i + 1 , end ) ;
29
+ for ( let left of lefts ) {
30
+ for ( let right of rights ) {
31
+ let root = new TreeNode ( i ) ;
32
+ root . left = left ;
33
+ root . right = right ;
34
+ ans . push ( root ) ;
35
+ }
36
+ }
37
+ }
38
+ return ans ;
39
+ }
You can’t perform that action at this time.
0 commit comments