描述

给定一个二叉树,检查它是否是镜像对称的。

示例 1:
二叉树 [1,2,2,3,4,4,3]是对称的。

  1. 1<br /> / \<br /> 2 2<br /> / \ / \<br />3 4 4 3

但是下面这个 [1,2,2,null,3,null,3]则不是镜像对称的:

1<br />   / \<br />  2   2<br />   \   \<br />   3    3

题解

这道题的具体解法,可参看 力扣官方题解

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isSymmetric = function(root) {
    return check(root, root)
};

const check = (leftPtr, rightPtr) => {
    // 如果只有根节点,返回true
    if (!leftPtr && !rightPtr) return true
    // 如果左右节点只存在一个,则返回false
    if (!leftPtr || !rightPtr) return false

    return leftPtr.val === rightPtr.val && check(leftPtr.left, rightPtr.right) && check(leftPtr.right, rightPtr.left)
}