1、题目描述
请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
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){
// 为空的话返回的是true
return true;
}
return isSame(pRoot.left,pRoot.right);
}
boolean isSame(TreeNode leftRoot,TreeNode rightRoot){
if(leftRoot == null && rightRoot == null){
return true;
}
if(leftRoot == null || rightRoot == null){
return false;
}
if(leftRoot.val == rightRoot.val){
return isSame(leftRoot.left,rightRoot.right) && isSame(leftRoot.right,rightRoot.left);
}else{
return false;
}
}
}