剑指 Offer 32

通过率 68.5%

题目链接

题目描述:

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

例如:
给定二叉树: [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 };
原文地址:https://www.cnblogs.com/wwqzbl/p/15143022.html