Concise and Straightforward Python Solution (find mid - reverse - merge)
\nclass Solution:\n    def reorderList(self, head: ListNode) -> None:\n        if not head:\n            return head\n        \n        # find mid point \n     
```\nclass Solution:\n    def reorderList(self, head: ListNode) -> None:\n        if not head:\n            return head\n        \n        # find mid point \n        slow = fast = head\n        \n        while fast and fast.next:\n            slow = slow.next\n            fast = fast.next.next\n        \n        # reverse the second half in-place\n        # slow.next: the start point of reverse\n        \n        head2 = None\n\t\tcurr = slow.next\n\t\tslow.next = None\n        while slow.next:\n            next = curr.next\n            curr.next = head2\n            head2 = curr\n            curr = next\n        \n        # merge in-place\n        first, second = head, head2\n        \n        while second:\n            first.next, first = second, first.next\n            second.next, second = first, second.next\n        return\n```
['Python', 'Python3']