Talentd
FleetCode

2649. Nested Array Generator

Medium79.3% acceptance

Given a multi-dimensional array of integers, return a generator object which yields integers in the same order as inorder traversal.

A multi-dimensional array is a recursive data structure that contains both integers and other multi-dimensional arrays.

inorder traversal iterates over each array from left to right, yielding any integers it encounters or applying inorder traversal to any arrays it encounters.

Example 1:

Input: arr = [[[6]],[1,3],[]]
Output: [6,1,3]
Explanation:
const generator = inorderTraversal(arr);
generator.next().value; // 6
generator.next().value; // 1
generator.next().value; // 3
generator.next().done; // true

Example 2:

Input: arr = []
Output: []
Explanation: There are no integers so the generator doesn't yield anything.

Constraints:

  • 0 <= arr.flat().length <= 105
  • 0 <= arr.flat()[i] <= 105
  • maxNestingDepth <= 105
Can you solve this without creating a new flattened version of the array?

Hints open one at a time

Hint 1
Generator functions can pass control to another generator function with "yield*" syntax.
Hint 2
Generator functions can recursively yield control to themselves.
Hint 3
You don't need to worry about recursion depth for this problem.
5:01
Still stuck?Read 3 approaches, or watch a walkthrough.
Open solution
Loading editor…
1/**
2 * @param {Array} arr
3 * @return {Generator}
4 */
5var inorderTraversal = function*(arr) {
6
7};
8
9/**
10 * const gen = inorderTraversal([1, [2, 3]]);
11 * gen.next().value; // 1
12 * gen.next().value; // 2
13 * gen.next().value; // 3
14 */
Starter codeJavaScriptSpaces: 4
Examples
Input
[[[6]],[1,3],[]]
Input
[]
Your code is saved on this device.Solution