题目描述:
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
思路:
这题和另一道很像(here),不过多了个分层打印的要求,难点也就在这里,看了一下Krahets大神的题解,queue.size()的操作真是厉害了~
1 /*JavaScript*/ 2 /** 3 * Definition for a binary tree node. 4 * function TreeNode(val) { 5 * this.val = val; 6 * this.left = this.right = null; 7 * } 8 */ 9 /** 10 * @param {TreeNode} root 11 * @return {number[][]} 12 */ 13 var levelOrder = function(root) { 14 if(!root) return [] 15 const que = [] 16 const res = [] 17 que.push(root) 18 while(que.length) { //遍历每一层 19 let len = que.length //重点在这里,先把当前层的长度保存下来 20 const temp = [] 21 while(len--) { //当len=0时表示此层遍历结束 22 if(que[0].left) que.push(que[0].left) 23 if(que[0].right) que.push(que[0].right) 24 temp.push(que.shift().val) 25 } 26 res.push(temp) 27 } 28 return res 29 };