// Same as level order traversal (Leetcode 102) but reverse the temp array alternatively before pushing to res

var zigzagLevelOrder = function (root) {
	const res = []
	if (!root) return res
	let q = [root],
		ltor = true //left-to-right flag

	while (q.length) {
		const numNodes = q.length,
			temp = []

		for (let i = 0; i < numNodes; i++) {
			const node = q.shift()
			temp.push(node.val)
			if (node.left) q.push(node.left)
			if (node.right) q.push(node.right)
		}
		// reverse alternating temp arr
		!ltor ? res.push(temp.reverse()) : res.push(temp)
		ltor = !ltor
	}

	return res
}