题目考察的知识点
-
二叉树的层序遍历:题目要求按照从上到下、从左到右的顺序遍历二叉树的节点。层序遍历是一种广度优先搜索(BFS)的算法,通过使用队列来实现。从根节点开始,依次将每一层的节点加入队列,并且在访问每一个节点时将其子节点加入队列,直到队列为空。
-
字符串拼接与数组操作:题目要求将每一层的节点编号拼接成一个字符串,并存储在一个结果数组中。在实现过程中,需要注意字符串的拼接方法(如使用
+=
或concat
),以及数组操作方法(如push
用于向数组末尾添加元素)。 -
编程语言:本题使用的是JavaScript进行代码实现。在JavaScript中,可以使用数组来模拟队列的操作,同时也需要注意数据类型的转换,例如将节点的编号转换为字符串。
题目解答方法的文字分析
创建一个队列来存储待遍历的节点,然后使用一个循环来遍历每一层的节点。在每一层的循环中,我们利用队列的先进先出性质,依次访问当前层的节点,并将当前层的节点编号加入结果字符串。同时,还要将当前节点的子节点加入队列。最后,将每一层的结果字符串加入结果数组,并返回该数组作为最终的答案。
本题解析所用的编程语言
本题的解析使用了JavaScript作为编程语言。
完整且正确的编程代码
function levelOrder(root) {
if (!root) {
return [];
}
let queue = [root]; // 创建队列并将根节点加入队列
let result = []; // 存储每层节点编号的数组
while (queue.length > 0) {
let size = queue.length; // 当前层的节点数量
let levelStr = ""; // 用于存储当前层的结果字符串
for (let i = 0; i < size; i++) {
let node = queue.shift(); // 出队当前层的一个节点
levelStr += node.val.toString(); // 将节点编号加入当前层的结果字符串
// 将当前节点的子节点加入队列
if (node.left) {
queue.push(node.left);
}
if (node.right) {
queue.push(node.right);
}
}
result.push(levelStr); // 将当前层的结果字符串加入结果数组
}
return result; // 返回结果数组
}