Skip to content

Commit 7b37b03

Browse files
committed
feat: add typescript solution to lc problem: No.0095.Unique Binary Search Trees II
1 parent b2baa3a commit 7b37b03

File tree

3 files changed

+127
-0
lines changed

3 files changed

+127
-0
lines changed

solution/0000-0099/0095.Unique Binary Search Trees II/README.md

+44
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,50 @@
6262

6363
```
6464

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+
65109
### **...**
66110

67111
```

solution/0000-0099/0095.Unique Binary Search Trees II/README_EN.md

+44
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,50 @@
4545

4646
```
4747

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+
4892
### **...**
4993

5094
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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+
}

0 commit comments

Comments
 (0)