对称二叉树

2020-11-13  本文已影响0人  422ccfa02512

题目

难度级别:简单

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

例如

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

上一篇下一篇

猜你喜欢

热点阅读