题目描述:
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
解题思路:
首先若根节点为空,返回true,如果左右子树任意一个节点为空,返回false,否则判断左右子树的关系是否满足镜像关系,即返回根节点的左子树和右子树是够满足镜像关系。
代码(java):
/*
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)return true;
else if(pRoot.left==null && pRoot.right==null)return true;
else if((pRoot.left!=null && pRoot.right==null) || (pRoot.left==null && pRoot.right!=null))return false;
else if(pRoot.left.val==pRoot.right.val){
return symmetrical(pRoot.left,pRoot.right);
}
return false;
}
public boolean symmetrical(TreeNode left,TreeNode right){
if(left==null && right==null)return true;
else if( (left == null && right !=null) || (right == null && left !=null))return false;
else if(left.val==right.val){
return symmetrical(left.left,right.right) && symmetrical(left.right,right.left);
}
return false;
}
}