给你二叉树的根节点 root
,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[[3],[20,9],[15,7]]
示例 2:
输入:root = [1] 输出:[[1]]
示例 3:
输入:root = [] 输出:[]
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var zigzagLevelOrder = function (root) {
if (root==null) {
return []
}
let res = []
let queue = []
queue.push(root)
let is_to_left = false
while (queue.length) {
let temp = []
let len = queue.length
for (let i = 0; i < len; i++) {
let target = queue.shift()
if (is_to_left) {
temp.unshift(target.val)
} else {
temp.push(target.val)
}
if (target.left) {
queue.push(target.left)
}
if (target.right) {
queue.push(target.right)
}
}
is_to_left = !is_to_left
res.push(temp)
}
return res
};
层序遍历 奇数层从左向右push数据 偶数层从右向左 注意出栈位置let target = queue.shift()