给你一个二叉树的根节点 root , 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
提示:
1.转化为:左右子树是否镜像
2.分解为:树1的左子树和树2的右子树是否镜像,树1的右子树和树2的左子树是否镜像
3.符合“分、解、合”特性,考虑选择分而治之
1.分:获取两个树的左子树和右子树
2.解:递归地判断树1的左子树和树2的右子树是否镜像,树1的右子树和树2的左子树是否镜像
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) {
if(!root) return true;
const isMirror = (l, r) => {
if(!l && !r) return true
if(l && r && l.val === r.val &&
isMirror(l.left, r.right) &&
isMirror(l.right, r.left)
) {
return true
}
return false
}
return isMirror(root.left, root.right)
};