Using recursive solution means an O(N) calling stack, which is essentially the same and less readable.\

```
class Solution:
# @param head, a ListNode
# @return nothing
def reorderList(self, head):
queue = collections.deque()
while head:
queue.append(head)
head = head.next
dummy = ListNode(-1)
head = dummy
length = 0
while queue:
if length % 2 == 0:
head.next = queue.popleft()
else:
head.next = queue.pop()
head = head.next
length += 1
head.next = None
```