LeetCode in Kotlin

589. N-ary Tree Preorder Traversal

Easy

Given the root of an n-ary tree, return the preorder traversal of its nodes’ values.

Nary-Tree input serialization is represented in their level order traversal. Each group of children is separated by the null value (See examples)

Example 1:

Input: root = [1,null,3,2,4,null,5,6]

Output: [1,3,5,6,2,4]

Example 2:

Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]

Output: [1,2,3,6,7,11,14,4,8,12,5,9,13,10]

Constraints:

Follow up: Recursive solution is trivial, could you do it iteratively?

Solution

import com_github_leetcode.Node

/*
 * Definition for a Node.
 * class Node(var `val`: Int) {
 *     var children: List<Node?> = listOf()
 * }
 */
class Solution {
    fun preorder(root: Node?): List<Int> {
        val res: MutableList<Int> = ArrayList()
        preorderHelper(res, root)
        return res
    }

    private fun preorderHelper(res: MutableList<Int>, root: Node?) {
        if (root == null) {
            return
        }
        res.add(root.`val`)
        for (node in root.neighbors) {
            preorderHelper(res, node)
        }
    }
}