题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
*
* @param root TreeNode类
* @return int整型二维数组
*/
function levelOrder( root ) {
// write code here
// 这道题就注意当root为空的时候要求返回 []
if(!root) return [];
const queue = [], res = [];
queue.push(root);
while(queue.length) {
let size = queue.length;
const temp = [];
while(size--) {
const node = queue.shift();
temp.push(node.val);
if(node.left) {
queue.push(node.left);
}
if(node.right) {
queue.push(node.right);
}
}
res.push(temp);
}
return res;
}
module.exports = {
levelOrder : levelOrder
};
二叉树的层序遍历,可以说是固定套路。
利用一个队列,将节点插入队列,同时记录队列大小size,每次(层)从队列中取出size个数。直至队列中没数了,就层序遍历完二叉树了。
最后打印二维数组就层序遍历的结果。
