剑指Offer打卡28.对称的二叉树

Posted 余光、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer打卡28.对称的二叉树相关的知识,希望对你有一定的参考价值。

剑指 Offer 28. 对称的二叉树

JavaScript剑指Offer题解

🚀包含数组、对象、链表、堆栈、树等经典题型
☕️每天一道,轻松不累
💬详细的题目解析,收藏方便阅读
🙏在线star地址

在线阅读地址

在线阅读地址

题目描述

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

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

1

/
2 2
/ \\ /
3 4 4 3

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

1

/
2 2
\\
3 3

示例 1:

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

示例 2:

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

题解

思路:

  1. 左子树的左节点 = 右子树的右节点
  2. 任意不满足则不是对称二叉树
  3. 父节点相等,则判断左右节点是否相等,并递归到深层
var isSymmetric = function (root) {
    if (!root) return true;

    function isTrue(left, right) {
        if (!left && !right) return true; // 都是空值也是对称
        if (!left || !right) return false; // 有一边不存在则不对称
        if (left.val !== right.val) return false; // 值不相等则不对称
        return isTrue(left.left, right.right) && isTrue(right.left, left.right)
    }
    // 把一个大的问题看成一个小的问题,父节点的对称,要依赖于下一层每一对节点都对称
    return isTrue(root.left, root.right);
};

写在最后

本篇是剑指Offer的第20题,俗话说好的合理的数据结构+算法才是写好代码的关键,不妨跟我一起来吧~

热门开源项目

以上是关于剑指Offer打卡28.对称的二叉树的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer--28对称的二叉树

剑指offer面试题 28. 对称的二叉树

剑指Offer:对称的二叉树28

剑指 Offer 28. 对称的二叉树

剑指Offer面试题28. 对称的二叉树

剑指 Offer 28. 对称的二叉树无取巧,易于理解!