Skip to content

Commit 71b4ffa

Browse files
author
Kohei Asai
authored
129. Sum Root to Leaf Numbers (axross#151)
1 parent 7d465a7 commit 71b4ffa

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

Diff for: solutions/sum_root_to_leaf_numbers.ts

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { BinaryTreeNode } from "../data_structures/binary_tree.ts";
2+
3+
// 129. Sum Root to Leaf Numbers
4+
// https://leetcode.com/problems/sum-root-to-leaf-numbers/
5+
export default function sumNumbers(
6+
root: BinaryTreeNode<number> | null
7+
): number {
8+
return sumNumbersWithContext(root, 0);
9+
}
10+
11+
function sumNumbersWithContext(
12+
node: BinaryTreeNode<number> | null,
13+
contextSum: number
14+
): number {
15+
if (node === null) return 0;
16+
17+
const hasChild = node.left !== null || node.right !== null;
18+
const sum = contextSum * 10 + node.val;
19+
20+
if (!hasChild) return sum;
21+
22+
return (
23+
sumNumbersWithContext(node.left, sum) +
24+
sumNumbersWithContext(node.right, sum)
25+
);
26+
}

Diff for: solutions/sum_root_to_leaf_numbers_test.ts

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { test } from "https://deno.land/std/testing/mod.ts";
2+
import { assertStrictEq } from "https://deno.land/std/testing/asserts.ts";
3+
import { createBinaryTreeNode } from "../data_structures/binary_tree.ts";
4+
import sumNumbers from "./sum_root_to_leaf_numbers.ts";
5+
6+
test("129. Sum Root to Leaf Numbers", () => {
7+
assertStrictEq(sumNumbers(createBinaryTreeNode([1, 2, 3])), 25);
8+
assertStrictEq(sumNumbers(createBinaryTreeNode([4, 9, 0, 5, 1])), 1026);
9+
assertStrictEq(sumNumbers(createBinaryTreeNode([0, 1])), 1);
10+
assertStrictEq(sumNumbers(createBinaryTreeNode([])), 0);
11+
});

0 commit comments

Comments
 (0)