递归

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public boolean isSymmetric(TreeNode root) {        return check(root, root);    }    public boolean check(TreeNode a, TreeNode b) {        if(a == null && b == null) {            return true;        }        if(a == null || b == null) {            return false;        }        return  a.val == b.val && check(a.left, b.right) && check(a.right, b.left);    }}

迭代

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public boolean isSymmetric(TreeNode root) {        Queue<TreeNode> queue = new LinkedList<TreeNode>();        queue.offer(root);        queue.offer(root);        while(!queue.isEmpty()) {            TreeNode a = queue.poll();            TreeNode b = queue.poll();            if(a==null && b==null){                continue;            }            if(a==null || b==null){                return false;            }            if(a.val != b.val) {                return false;            }            queue.offer(a.left);            queue.offer(b.right);            queue.offer(a.right);            queue.offer(b.left);        }        return true;    }}