题干:
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null) return true;
return isEQ(root.left,root.right);
}
public boolean isEQ(TreeNode left,TreeNode right){
if(left==null&&right==null) return true;
if(left==null||right==null) return false;
if(left.val!=right.val) return false;
return isEQ(left.left,right.right)&&isEQ(left.right,right.left);
}
}
大致思路是将根节点的两个子节点作为参数进行递归判断。
如果递归到叶子结点的子节点(则说明已经是对称的),如果没有递归到叶子结点,就挨个递归判断left结点的左结点和right结点的右结点,以及left结点的右结点和right结点的左结点是否相等。