我一开始想到的是用之前的镜像二叉树方法把树转换成他的镜像树放进队列,在这之前把树自己放进队列。然后比较这两个队列。但这样是有问题的,比如题目给的[1,2,2,null,3,null,3] 这个示例就不能通过,于是看了题解。豁然开朗,其实只要拿一个叶子节点的左孩子和另一个叶子节点的右孩子比较,一个叶子节点的右孩子和另一个叶子节点的左孩子比较就可以,再递归,左孩子的左孩子和右孩子的右孩子比,左孩子的右孩子和右孩子的左孩子比.....
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null){
return true;
}else{
return recur(root.left,root.right);
}
}
public boolean recur(TreeNode root1, TreeNode root2){
if(root1 == null && root2 == null) return true;
if(root1 == null || root2 == null) return false;
return root1.val == root2.val && recur(root1.left,root2.right) && recur(root1.right,root2.left);
}
}