N-ary Tree Preorder Traversal

class Solution:
    def preorder(self, root: 'Node') -> List[int]:
        def traverse(node, arr):
            if not node:
                return
            arr.append(node.val)
            for n in node.children:
                traverse(n, arr)

        cache = []
        traverse(root, cache)
        return cache