Skip to content

Commit 8e82b98

Browse files
committed
feat: add ts solution to lc problem: No.1530
1 parent 0caf311 commit 8e82b98

File tree

3 files changed

+106
-0
lines changed

3 files changed

+106
-0
lines changed

solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,43 @@ func dfs(root *TreeNode, cnt []int, i int) {
270270
}
271271
```
272272

273+
#### TypeScript
274+
275+
```ts
276+
function countPairs(root: TreeNode | null, distance: number): number {
277+
const pairs: number[][] = [];
278+
279+
const dfs = (node: TreeNode | null): number[][] => {
280+
if (!node) return [];
281+
if (!node.left && !node.right) return [[node.val, 1]];
282+
283+
const left = dfs(node.left);
284+
const right = dfs(node.right);
285+
286+
for (const [x, dx] of left) {
287+
for (const [y, dy] of right) {
288+
if (dx + dy <= distance) {
289+
pairs.push([x, y]);
290+
}
291+
}
292+
}
293+
294+
const res: number[][] = [];
295+
for (const arr of [left, right]) {
296+
for (const x of arr) {
297+
if (++x[1] <= distance) res.push(x);
298+
}
299+
}
300+
301+
return res;
302+
};
303+
304+
dfs(root);
305+
306+
return pairs.length;
307+
}
308+
```
309+
273310
<!-- tabs:end -->
274311

275312
<!-- solution:end -->

solution/1500-1599/1530.Number of Good Leaf Nodes Pairs/README_EN.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,43 @@ func dfs(root *TreeNode, cnt []int, i int) {
245245
}
246246
```
247247

248+
#### TypeScript
249+
250+
```ts
251+
function countPairs(root: TreeNode | null, distance: number): number {
252+
const pairs: number[][] = [];
253+
254+
const dfs = (node: TreeNode | null): number[][] => {
255+
if (!node) return [];
256+
if (!node.left && !node.right) return [[node.val, 1]];
257+
258+
const left = dfs(node.left);
259+
const right = dfs(node.right);
260+
261+
for (const [x, dx] of left) {
262+
for (const [y, dy] of right) {
263+
if (dx + dy <= distance) {
264+
pairs.push([x, y]);
265+
}
266+
}
267+
}
268+
269+
const res: number[][] = [];
270+
for (const arr of [left, right]) {
271+
for (const x of arr) {
272+
if (++x[1] <= distance) res.push(x);
273+
}
274+
}
275+
276+
return res;
277+
};
278+
279+
dfs(root);
280+
281+
return pairs.length;
282+
}
283+
```
284+
248285
<!-- tabs:end -->
249286

250287
<!-- solution:end -->
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
function countPairs(root: TreeNode | null, distance: number): number {
2+
const pairs: number[][] = [];
3+
4+
const dfs = (node: TreeNode | null): number[][] => {
5+
if (!node) return [];
6+
if (!node.left && !node.right) return [[node.val, 1]];
7+
8+
const left = dfs(node.left);
9+
const right = dfs(node.right);
10+
11+
for (const [x, dx] of left) {
12+
for (const [y, dy] of right) {
13+
if (dx + dy <= distance) {
14+
pairs.push([x, y]);
15+
}
16+
}
17+
}
18+
19+
const res: number[][] = [];
20+
for (const arr of [left, right]) {
21+
for (const x of arr) {
22+
if (++x[1] <= distance) res.push(x);
23+
}
24+
}
25+
26+
return res;
27+
};
28+
29+
dfs(root);
30+
31+
return pairs.length;
32+
}

0 commit comments

Comments
 (0)