题目
难度级别:简单
给定一个二叉树,检查它是否是镜像对称的。
例如
二叉树 [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
进阶:
你可以运用递归和迭代两种方法解决这个问题吗?
解题思路
通过深度周游算法,递归遍历分别比较2个节点,因为对称关系,所以2个节点需要满足
1: 当前节点值相同
2: 当前节点的left与另一个节点的right值相同;当前节点的right与另一个节点的left值相同。
之后就可以通过递归进行比较了。
const isSymmetric = function(root) {
const check = function(p,q) {
if (p === null && q === null)
return true
else if (p === null || q === null || p.val !== q.val)
return false
else
return check(p.left,q.right) && check(p.right, q.left)
}
return check(root,root)
};
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/symmetric-tree
网友评论