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)
链接:https://leetcode-cn.com/problems/symmetric-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2, 算法
#scalaobject Solution {def isSymmetric(root: TreeNode): Boolean = {if (root == null) {return true}isSymmetricTree(root.left, root.right)}def isSymmetricTree(left: TreeNode, right: TreeNode): Boolean = {if (left == null && right == null) {true} else if (left == null || right == null) {false} else if (left.value != right.value) {false} else {isSymmetricTree(left.left, right.right) && isSymmetricTree(left.right, right.left)}}}
#pythonclass Solution:def isSymmetric(self, root: TreeNode) -> bool:if root:return self.isSymmetricTree(root.left, root.right)else:return Truedef isSymmetricTree(self, left: TreeNode, right: TreeNode) -> bool:if left is None and right is None:return Trueelif left and right:if left.val == right.val:return self.isSymmetricTree(left.left, right.right) and self.isSymmetricTree(left.right, right.left)else:return Falseelse:return False
