Start with standard BFS using a queue. Process nodes level by level, just like normal level-order traversal. The only twist: keep a boolean flag that flips after every level.
When the flag says "left-to-right," append values normally. When it says "right-to-left," reverse the level's values before adding them to your result. You don't change how you enqueue children. You only change how you read the collected values for that level.