思路
广度优先遍历。但是要记住每一行,就得记住这一行的上一行一共有多少节点。记住i行节点个数sum,第i+1行就是for循环多少sum次。
代码
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrder = function(root) {
var res = [];//返回值
var queue = [];//广度优先遍历利用队列
if(root) queue.push(root);
while(queue.length != 0) {
let size = queue.length;
let row = [];//记录 每一行的结果
for(let i = 0; i < size; i++) {
let node = queue.shift();
row.push(node.val);
if(node.left) queue.push(node.left);
if(node.right) queue.push(node.right);
}
res.push(row);
}
return res;
};