给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
思路: 和BFS不同之处在于,BFS返回的是一个一维数组,层序遍历的结果是一个二维数组,每个元素是一个数组, 每一层的节点在同一个元素中,
我们维护一个cur数组和一个next数组,还有一个vals数组(存储每一层的数组)和一个answer数组(二维数组,存储结果)
var levelOrder = function (root) {
if (!root) return [];
let cur = [root];//先把root存cur中
let answer = [];//答案
while (cur.length !== 0) {//最后一层的子树肯定是null,当cur = next = null时,结束遍历
//在内部声明,可简化置空操作
let next = [];
let vals = [];
//迭代遍历cur数组
for(const c of cur){
vals.push(c.val);//本层的值存入vals数组
//把下一层节点放入next数组中
if(c.left){
next.push(c.left);
}
if(c.right){
next.push(c.right);
}
}
//进行下一轮
cur = next;
//添加答案
answer.push(vals)
}
return answer;
};