什么是对称二叉树?
镜像对称则对称二叉树,
例如:
如果根节点为空时,其实就不算是树。
第二层时,左节点等于右节点则是对称二叉树。
超过二层之后,其实从外向内逐个对比,判断最左边跟最右边是否相等,然后左边第二位和右边第二位相等,依次类推。
代码如下:
public boolean isSymmetric(TreeNode root) {
if(root==null){
return false;
}
return checkSymmetric(root.left,root.right);
}
public boolean checkSymmetric(TreeNode root1,TreeNode root2){
if(root1==null&&root2==null){
return true;
}
if(root1==null||root2==null||root1.val!=root2.val){
return false;
}
return checkSymmetric(root1.left,root2.right)&&checkSymmetric(root1.right,root2.left);
}
我这里进入二层之后,使用递推的方式,要么对应两个节点都为空,要么相同,才能算是对称二叉树。