very similar to regular level traversal, however, we use stack instead to do the zigzag