diff --git a/solutions/binaryTreeInorderTraversal.test.ts b/solutions/binaryTreeInorderTraversal.test.ts new file mode 100644 index 0000000..06fadd8 --- /dev/null +++ b/solutions/binaryTreeInorderTraversal.test.ts @@ -0,0 +1,21 @@ +import { createBinaryTreeNode } from "../utilities/TreeNode"; +import inorderTraversal from "./binaryTreeInorderTraversal"; + +describe("94. Binary Tree Inorder Traversal", () => { + const TEST_CASES = new Map([ + [[1, null, 2, 3], [1, 3, 2]], + [[4, 4, 5, 1, 2], [1, 4, 2, 4, 5]], + [ + [1, null, 1, null, 1, null, 1, null, 1, null, 1, 2], + [1, 1, 1, 1, 1, 2, 1] + ], + [[1], [1]], + [[], []] + ]); + + for (const [tree, expected] of TEST_CASES) { + it(`returns [${expected}] when called with [${tree}]`, () => { + expect(inorderTraversal(createBinaryTreeNode(tree))).toEqual(expected); + }); + } +}); diff --git a/solutions/binaryTreeInorderTraversal.ts b/solutions/binaryTreeInorderTraversal.ts new file mode 100644 index 0000000..8e5e765 --- /dev/null +++ b/solutions/binaryTreeInorderTraversal.ts @@ -0,0 +1,21 @@ +import { TreeNode } from "../utilities/TreeNode"; + +// 94. Binary Tree Inorder Traversal +// https://leetcode.com/problems/binary-tree-inorder-traversal/ +export default function inorderTraversal(root: TreeNode | null): T[] { + const history: T[] = []; + + function traverse(node: TreeNode | null): void { + if (node === null) return; + + traverse(node.left); + + history.push(node.val); + + traverse(node.right); + } + + traverse(root); + + return history; +}