问题描述:
给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
思路:
对左右子树进行判断,左子树的右子树是否等于右子树的阿左子树
递归要注意边界判断
1、如果左子树位空就要判断右子树是否为空,为空就返回ture,不为空就不是对称二叉树
2、如果通过第一层判断,那么只要右子树为空就一定不是对称二叉树
3、如果左右子树的值相等,就分别对左子树的右子树和右子树的左子树,以及左子树的左子树和右子树的右子树进行判断
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
boolean isSymmetrical(TreeNode pRoot) {
if (pRoot==null||(pRoot.left==null&&pRoot.right==null)){
return true;
}
if ((pRoot.right==null&&pRoot.left!=null)||(pRoot.right!=null&&pRoot.left==null)){
return false;
}
TreeNode a=pRoot.left;
TreeNode b=pRoot.right;
boolean oj=isSymmetricals(a,b);
return oj;
}
private static boolean isSymmetricals(TreeNode a, TreeNode b) {
if (a==null){
return b==null;
}
if (b==null){
return false;
}
if (a.val==b.val){
boolean h2=isSymmetricals(a.right,b.left)&&isSymmetricals(a.left,b.right);
return h2;
}else{
return false;
}
}
}