给定一个二叉树,检查它是否是镜像对称的。
    例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
    1
    / \
    2 2
    / \ / \
    3 4 4 3
    但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
    1
    / \
    2 2
    \ \
    3 3
    进阶:
    你可以运用递归和迭代两种方法解决这个问题吗?

    1. /**
    2. * Definition for a binary tree node.
    3. * public class TreeNode {
    4. * int val;
    5. * TreeNode left;
    6. * TreeNode right;
    7. * TreeNode(int x) { val = x; }
    8. * }
    9. */
    10. class Solution {
    11. //借鉴org
    12. public boolean isSymmetric(TreeNode root) {
    13. if(root==null){
    14. return true;
    15. }
    16. TreeNode left =root.left;
    17. TreeNode right=root.right;
    18. return helper(left,right);
    19. }
    20. public boolean helper(TreeNode left,TreeNode right) {
    21. if(left==null&&right==null){
    22. return true;
    23. }
    24. if(left==null||right==null){
    25. return false;
    26. }
    27. if(left.val==right.val){
    28. return //(left.left.val==right.right.val)&& (left.right.val==right.left.val)
    29. //&&
    30. helper(left.left,right.right)&&helper(left.right,right.left);
    31. }
    32. return false;
    33. }
    34. }
    1. 假设树上一共 n 个节点。
    2. 时间复杂度:这里遍历了这棵树,渐进时间复杂度为 O(n)
    3. 空间复杂度:这里的空间复杂度和递归使用的栈空间有关,这里递归层数不超过 n,故渐进空间复杂度为 O(n)。