题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
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个数。直至队列中没数了,就层序遍历完二叉树了。
最后打印二维数组就层序遍历的结果。