难度:中等
题目描述:
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
示例:
给定二叉树: [3,9,20,null,null,15,7],
[
[3],
[20,9],
[15,7]
]
解题思路:
var levelOrder = function(root) {
if (!root) return [];
let queue = [root];
let res = [];
let left = true;
while (queue.length > 0) {
let currentLevel = [];
let len = queue.length;
while (len) {
let cur = queue.shift();
if(left){
currentLevel.push(cur.val);
} else {
currentLevel.unshift(cur.val);
}
if (cur.left) queue.push(cur.left);
if (cur.right) queue.push(cur.right);
len--;
}
left = !left
res.push(currentLevel);
}
return res;
};