题解 | 求二叉树的层序遍历
求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
/**
* class TreeNode(var `val`: Int) {
* var left: TreeNode? = null
* var right: TreeNode? = null
* }
*/
import java.util.LinkedList
import java.util.Queue
import java.util.ArrayDeque
object Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型二维数组
*/
fun levelOrder(root: TreeNode?): Array<IntArray> {
// write code here
if (root == null) return emptyArray()
val list = mutableListOf<IntArray>()
val queue = ArrayDeque<TreeNode>()
queue.addLast(root)
while(queue.isNotEmpty()){
val levelSize = queue.size
val curValues = mutableListOf<Int>()
repeat(levelSize){
val node = queue.removeFirst()
curValues.add(node.`val`)
node.left?.let{queue.addLast(it)}
node.right?.let{queue.addLast(it)}
}
list.add(curValues.toIntArray())
}
return list.toTypedArray()
}
}

查看3道真题和解析