classSolution{ fun levelOrder(root: TreeNode?): List<List<Int>> { if (root == null) { return emptyList() } val queue =ArrayDeque<TreeNode>() val list =ArrayList<ArrayList<Int>>() queue.add(root) while (queue.isNotEmpty()) { var arr =ArrayDeque<Int>() for (i in queue.size downTo 1 step 1) { var cur = queue.removeFirst() if (list.size %2==0) { arr.addLast(cur.`val`) } else { arr.addFirst(cur.`val`) } cur.left?.let { queue.add(cur.left!!) } cur.right?.let { queue.add(cur.right!!) } } var res =ArrayList<Int>(arr) list.add(res) } return list } }