2 Solutions | Recursive | Iterative | Easy to Understand | Faster | Simple | Python Solution
\n    def recusive(self, head):\n        out = None\n        def rec(head, curr):\n            if head:\n                total, node = rec(head.next, curr + 1)\
```\n    def recusive(self, head):\n        out = None\n        def rec(head, curr):\n            if head:\n                total, node = rec(head.next, curr + 1)\n                return total, node if total//2 != curr else head\n            return curr, None\n           \n        return rec(head, 0)[1]\n    \n    def iterative(self, head):\n        slow, fast = head, head\n        while fast and fast.next:\n            fast = fast.next.next\n            slow = slow.next\n        return slow\n```\n\n**I hope that you\'ve found the solution useful.**\n*In that case, please do upvote and encourage me to on my quest to document all leetcode problems\uD83D\uDE03*\nPS: Search for **mrmagician** tag in the discussion, if I have solved it, You will find it there\uD83D\uDE38
['Recursion', 'Iterator', 'Python', 'Python3']