Python - Human Readable Code - 6 lines
This return statement should help ypu understand - \nreturn (root.val + without_l + without_r, max(with_l, without_l) + max(with_r, without_r))\n\n\n    def rob
This return statement should help ypu understand - \n`return (root.val + without_l + without_r, max(with_l, without_l) + max(with_r, without_r))`\n\n```\n    def rob(self, root):\n        def with_without_rob(root):\n\n            if root :\n                with_l, without_l = with_without_rob(root.left)\n                with_r, without_r = with_without_rob(root.right)        \n                return (root.val + without_l + without_r, max(with_l, without_l) + max(with_r, without_r))\n            return (0, 0)\n            \n        return max(with_without_rob(root))\n```
['Recursion', 'Python']