题目要求:
思路:我们需要有一个方法,来判断根节点的左右子树是否为对称二叉树,和博客前面的判断相同树有点像,只是判断的节点有一点不同。
1.创建一个方法,判断根节点的左右孩子,把根节点的左右子树传参,递归根节点左树的左和根节点右树的右&&…左树的右和…右树的左,判断是否符合条件。
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null){//为空也是对称二叉树
return true;
}
return isSymmetricChild(root.left,root.right);//传左右子树
}
private boolean isSymmetricChild(TreeNode leftTree,TreeNode rightTree){
//判断相同树
if(leftTree != null && rightTree == null || leftTree == null && rightTree != null){
return false;
}
if(leftTree == null && rightTree == null){
return true;
}
if(leftTree.val != rightTree.val){
return false;
}
return isSymmetricChild(leftTree.left,rightTree.right) && //左树的左和右树的右是对称的节点
isSymmetricChild(leftTree.right,rightTree.left);
}
}
运行结果👇