[路飞]_101. 对称二叉树

59 阅读1分钟

题目地址

题目描述

给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1:

image.png

输入: root = [1,2,2,3,4,4,3]
输出: true

示例 2:

image.png

输入: root = [1,2,2,null,3,null,3]
输出: false

解题思路

  • 根据题意要验证一颗数是否是对称二叉树,如果一颗树的左子树和右子树镜像对称,那么就是一颗对称二叉树
  • 因此该题可以转化为,两颗树在什么情况下互为镜像
  • 它们的两个根节点具有相同的值
  • 一颗树的左子树和另一颗树的右子树的值相同,相反也相同

代码

var isSymmetric = function(root){
    let pre = function(p, q){
        if(p == null && q == null) return true;
        if(p == null || q == null) return false;
        return p.val == q.val && pre(p.left, q.right) && pre(p.right, q.right);
    }
    return pre(root, root);
}