/** * Example: * var ti = TreeNode(5) * var v = ti.`val` * Definition for a binary tree node. * class TreeNode(var `val`: Int) { * var left: TreeNode? = null * var right: TreeNode? = null * } */ class Solution { private fun levelOrder(root: TreeNode?, levels: MutableList>, level: Int): MutableList> { if (root == null) { return levels } if (level + 1 > levels.size) { levels.add(mutableListOf()) } levels[level].add(root.`val`) levelOrder(root.left, levels, level + 1) return levelOrder(root.right, levels, level + 1) } fun levelOrder(root: TreeNode?): List> = levelOrder(root, mutableListOf>(), 0) }