什么是对称二叉树?
镜像对称则对称二叉树,
例如:

如果根节点为空时,其实就不算是树。
第二层时,左节点等于右节点则是对称二叉树。
超过二层之后,其实从外向内逐个对比,判断最左边跟最右边是否相等,然后左边第二位和右边第二位相等,依次类推。
代码如下:
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);
}
我这里进入二层之后,使用递推的方式,要么对应两个节点都为空,要么相同,才能算是对称二叉树。
本文介绍了对称二叉树的概念,强调了其镜像对称的特性,并通过代码展示了如何使用递归方法判断一个二叉树是否为对称二叉树。在递归过程中,比较左右子树的对称性是关键,当遇到空节点或者节点值不相等时,返回false,否则继续深入检查。这种方法简洁且有效地解决了问题。
289

被折叠的 条评论
为什么被折叠?



