对称二叉树-101
sl1673495 opened this issue · 0 comments
sl1673495 commented
101.对称二叉树
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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
进阶:
你可以运用递归和迭代两种方法解决这个问题吗?
思路
当一个二叉树对称时,说明它的左子树的左节点和右子树的右节点对称,并且左子树的右节点和右子树的左节点也对称。
根节点 root 可以同时当做最初的左节点和右节点,可以简化这个问题的判断。
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isSymmetric = function (root) {
if (!root) return true
let helper = (left, right) => {
if (!left && !right) {
return true
}
if (!left || !right) {
return false
}
if (left.val === right.val) {
return helper(left.left, right.right) && helper(left.right, right.left)
} else {
return false
}
}
return helper(root, root)
};