剑指Offer-26对称的二叉树

59 阅读1分钟
public static boolean isSymmetric(TreeNode root) {
    if (root == null){
        return true;
    }
    // 子问题判断每对节点是否对称
    return symmetric(root.left, root.right);
}

public static boolean symmetric(TreeNode left, TreeNode right){
    if (left == null && right == null){
        return true;
    }
    // 出口 有且只有一方为空或两值不相等
    if (left == null || right == null || left.val != right.val){
        return false;
    }
    return symmetric(left.left, right.right) && symmetric(left.right, right.left);
}