题目
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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)
}
如有错误欢迎指出,欢迎一起讨论!