题解 | #对称的二叉树#
对称的二叉树
http://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb
思路: 对左右子树进行判断,左子树的右子树是否等于右子树的阿左子树 递归要注意边界判断 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;
}
}
}
