LeetCode: 101. 对称二叉树(Python)
程序员文章站
2024-01-11 17:17:34
...
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:使用递归,比较当前结点和当前结点的叶子镜像位置是否一致,然后递归下一个子树
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
def compare(node1,node2):
if not node1 and not node2:
return True
elif not node1 or not node2:
return False
if node1.val!=node2.val:
return False
# 镜像位置比较
return compare(node1.left, node2.right) and compare(node1.right, node2.left)
return compare(root, root)