描述
给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
例如: 下面这棵二叉树是对称的
public class SymmetricalTree {
static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
boolean recursion(TreeNode root1, TreeNode root2){
//可以两个都为空
if(root1 == null && root2 == null)
return true;
//只有一个为空或者节点值不同,必定不对称
if(root1 == null || root2 == null || root1.val != root2.val)
return false;
//每层对应的节点进入递归比较
return recursion(root1.left, root2.right) && recursion(root1.right, root2. left);
}
boolean isSymmetrical(TreeNode pRoot) {
if(pRoot == null)
return true;
if(pRoot.left == null && pRoot.right == null)
return true;
//只有一个为空或者节点值不同,必定不对称
if(pRoot.left == null || pRoot.right == null || pRoot.left.val != pRoot.right.val)
return false;
return recursion(pRoot.left, pRoot.right);
}
public static void main(String[] args) {
}
}