题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
解题思路
- 就是中左右的遍历顺序和中右左的遍历顺序输出是一致的(也就是比较二叉树和它的镜像二叉树是否相等);
- 采用递归实现。
代码
public class Solution {
boolean isSymmetrical(TreeNode pRoot)
{
return isSymmetrical(pRoot,pRoot);
}
//1.
boolean isSymmetrical(TreeNode pRoot1,TreeNode pRoot2){
if(pRoot1==null && pRoot2==null){
return true;
}
if(pRoot1==null || pRoot2==null){
return false;
}
if(pRoot1.val!=pRoot2.val){
return false;
}
return isSymmetrical(pRoot1.left,pRoot2.right) && isSymmetrical(pRoot1.right,pRoot2.left);
}
}