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.
classSolution {
// Helper method to recursively traverse the multi-dimensional arrayprivatevoidinorderTraversalHelper(Object[] arr, List<Integer> result) {
for (Object element : arr) {
if (element instanceof Integer) {
result.add((Integer) element);
} else {
// The element is a nested array, so recursively apply inorder traversal inorderTraversalHelper((Object[]) element, result);
}
}
}
public Iterator<Integer>inorderTraversal(Object[] arr) {
List<Integer> result =new ArrayList<>();
inorderTraversalHelper(arr, result);
return result.iterator();
}
publicstaticvoidmain(String[] args) {
Solution sol =new Solution();
Object[] arr =new Object[]{1, new Object[]{2, 3}, 4, new Object[]{5, new Object[]{6, 7}}};
Iterator<Integer> iterator = sol.inorderTraversal(arr);
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from typing import Generator, List, Union
NestedList = List[
Union[int, "NestedList"]
] # A type alias for multi-dimensional arraysclassSolution:
definorder_traversal(self, arr: NestedList) -> Generator[int, None, None]:
for element in arr:
if isinstance(element, int):
yield element
else:
# The element is a nested array (list), so recursively apply inorder traversalyield from self.inorder_traversal(element)