上一话利用树的深度优先遍历和广度优先遍历做了两道简单级别的题
1、题目描述
102. 二叉树的层序遍历
中等难度
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
2、解题思路
这道题明显就是利用树的广度优先遍历,遍历每一层的时候,同一层的放在一个数组里,最后结果在一个二维数组里
3、编码实现
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrder = function(root) {
if(!root) return [];
// 广度优先遍历
// 这里的0表示数组下标
const queue = [[root, 0]];
const res = [];
while(queue.length) {
const [node, index] = queue.shift();
// 如果这层没有值
if(!res[index]) {
// 注意这里是push一个数组进去
res.push([node.val]);
} else {
// 这里是说同一层的放在同一个数组里哦
res[index].push(node.val);
}
if(node.left) queue.push([node.left, index + 1]);
if(node.right) queue.push([node.right, index + 1]);
}
return res;
};
4、结果
写完啦~
关联博客:
JavaScript实现Leetcode104-二叉树的最大深度和111-二叉树的最小深度
JavaScript实现树的深度优先遍历和广度优先遍历