题目
给定一个二叉树,检查它是否是镜像对称的。
示例
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
代码
/**
* 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) {
if(root==null){return true;}
if(root.left==null&&root.right==null){return true;}
if(root.left==null){return false;}
if(root.right==null){return false;}
return JiSuan(root.left,root.right);
}
public boolean JiSuan(TreeNode node1,TreeNode node2){
if(node1==null&&node2==null){return true;}
if(node1==null||node2==null){return false;}
if(node1.val!=node2.val){return false;}
//唯一要注意的一点是这里的判断条件:
//一定是node1.left是否等于node2.right,并且node1.right是否等于node2.left
return JiSuan(node1.left,node2.right)&&JiSuan(node1.right,node2.left);
}
}