https://leetcode-cn.com/submissions/detail/305476984/
    需要注意的点
    1.迭代
    2.递归

    1. # Definition for a binary tree node.
    2. # class TreeNode:
    3. # def __init__(self, val=0, left=None, right=None):
    4. # self.val = val
    5. # self.left = left
    6. # self.right = right
    7. class Solution:
    8. def isSymmetric(self, root: Optional[TreeNode]) -> bool:
    9. if not root:
    10. return True
    11. left = root.left
    12. right = root.right
    13. if (not left and right) or (not right and left):
    14. return False
    15. q = [left, right]
    16. while q:
    17. n1 = q.pop(0)
    18. n2 = q.pop(0)
    19. if not n1 and not n2:
    20. continue
    21. if not n1 or not n2:
    22. return False
    23. if n1.val != n2.val:
    24. return False
    25. q.append(n1.left)
    26. q.append(n2.right)
    27. q.append(n1.right)
    28. q.append(n2.left)
    29. return True
    1. # Definition for a binary tree node.
    2. # class TreeNode:
    3. # def __init__(self, val=0, left=None, right=None):
    4. # self.val = val
    5. # self.left = left
    6. # self.right = right
    7. class Solution:
    8. def isSymmetric(self, root: Optional[TreeNode]) -> bool:
    9. if not root:
    10. return True
    11. def reverseTree(left: TreeNode, right: TreeNode)-> bool:
    12. if not left or not right:
    13. return left == right
    14. if left.val != right.val:
    15. return False
    16. return (reverseTree(left.left, right.right) and reverseTree(left.right, right.left))
    17. return reverseTree(root.left, root.right)