[路飞]_LeetCode_101. 对称二叉树

176 阅读1分钟

题目

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

例如,二叉树 [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

来源:力扣(LeetCode)leetcode-cn.com/problems/sy…

解题思路

我们用判断树是否为相同的思路,把树复制一份再拿来对比,如果树的节点值相等,左子节点和拷贝树的右子节点相等,右子节点和拷贝树的左子节点相等,则认为树是对称的。

代码实现

var isSymmetric = function (root) {
  return check(root, root)
};

var check = function (p, q) {
  if (!p && !q) return true
  if (!p || !q) return false
  return p.val === q.val && check(p.left, q.right) && check(q.left, p.right)
}

如有错误欢迎指出,欢迎一起讨论!