【Leetcode】101.对称二叉树-CSDN博客

65 阅读1分钟

对称二叉树

题目

在这里插入图片描述

思路

思路和判断两棵树是否相同类似

只不过是判断两棵树判断第一棵树和第二棵树的同一位置是否相同
判断是否为对称二叉树是类似于判断将一棵子树翻转后左右子树是否相同 但实际上我们并不需要翻转 只是思路上反转一下即可

代码

class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root == null){
            return true;
        }
        //递归判断子树
        return isSymmetricChild(root.left,root.right);
    }

	//和判断两棵树是否相同代码十分相似
    public boolean isSymmetricChild(TreeNode root1,TreeNode root2){
        if(root1 == null && root2 != null || root1 != null && root2 == null){
            return false;
        }
        if(root1 == null && root2 == null){
            return true;
        }
        //这里往下都是不为空的情况
        if(root1.val != root2.val){
            return false;
        }

		//不同点就在递归参数的部分
		//我们是拿左节点和右节点比较 逻辑上就是将一棵子树翻转后在比较是否相同
        return isSymmetricChild(root1.left,root2.right) && isSymmetricChild(root1.right,root2.left);
    }
}