剑指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
题解
思路:
- 左子树的左节点 = 右子树的右节点
- 任意不满足则不是对称二叉树
- 父节点相等,则判断左右节点是否相等,并递归到深层
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.对称的二叉树的主要内容,如果未能解决你的问题,请参考以下文章