一般都会让我们去判断二叉树是否是对称的?
看了我的上一篇博客 二叉树的镜像
感觉和这篇博客像像的,其实也就是像像的
对称二叉树:两边相同等的位置的节点的值一样,说白了就是从主树干折过去完全覆盖
代码:
public class Main {
public boolean isSymmetrical(TreeNode root){
//通过重载,来将树分开,两边来比较是否相等
return isSymmetrical(root.left,root.right);
}
public boolean isSymmetrical(TreeNode left,TreeNode right){
if(left==null&&right==null){
return true;
}
if(left==null||right==null){
return false;
}
if(left.data!=right.data){
return false;
}
//靠树主干分割线的相比较(左子树的右子树与对称位置的右子树的左子树比较),
//远离主干分割线的、也就是靠外的相比较(左子树的左子树与对称位置的右子树的右子树比较)
return isSymmetrical(left.left,right.right)&&isSymmetrical(left.right,right.left);
}
}
class TreeNode{
int data;
TreeNode left;
TreeNode right;
public TreeNode(int data){
this.data=data;
this.left=null;
this.right=null;
}
}