python, best and explained O(n) recursion
python\nclass Solution:\n    def isSymmetric(self, root: TreeNode) -> bool:\n        if not root:\n            return True\n        \n        def isMirror(tree1
```python\nclass Solution:\n    def isSymmetric(self, root: TreeNode) -> bool:\n        if not root:\n            return True\n        \n        def isMirror(tree1, tree2):\n            if not tree1 or not tree2: # if one of them is null\n                return tree2 == tree1  # compare them\n            if tree1.val != tree2.val: # if above not executed, means they are both number\n                return False           # if they are both different return false\n                                       # if they are similar go and look further\n            return isMirror(tree1.left, tree2.right) and isMirror(tree1.right, tree2.left)\n            \n        return isMirror(root.left, root.right)\n```
['Recursion', 'Python', 'Python3']