LeetCode in Kotlin

429. N-ary Tree Level Order Traversal

Medium

Given an n-ary tree, return the level order 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,2,4],[5,6]]

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,4,5],[6,7,8,9,10],[11,12,13],[14]]

Constraints:

Solution

import com_github_leetcode.Node
import java.util.LinkedList
import java.util.Queue

/*
 * Definition for a Node.
 * class Node(var `val`: Int) {
 *     var neighbors: List<Node?> = listOf()
 * }
 */
class Solution {
    fun levelOrder(root: Node?): List<List<Int>> {
        val result: MutableList<List<Int>> = ArrayList()
        if (root == null) {
            return result
        }
        val queue: Queue<Node> = LinkedList<Node>()
        queue.offer(root)
        while (queue.isNotEmpty()) {
            val size: Int = queue.size
            val level: MutableList<Int> = ArrayList()
            for (i in 0 until size) {
                val currentNode: Node = queue.poll()
                level.add(currentNode.`val`)
                for (child in currentNode.neighbors) {
                    queue.offer(child)
                }
            }
            result.add(level)
        }
        return result
    }
}