
思路
联想递归三部曲:传入参数、遍历方式、返回什么。本题联想到先序遍历的方式,需要遍历整颗二叉树,最后返回的是一个布尔值。然后我们需要传入的是左子树和左子树的节点,然后分别进行比较。
python
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
def compare(left,right):
if left==None and right==None:
return True
elif left==None and right!=None:
return False
elif left!=None and right==None:
return False
elif left.val!=right.val:
return False
Left=compare(left.left,right.right)#比较左子树的左孩子和右子树的右孩子
Right=compare(left.right,right.left)#比较左子树的右孩子与右子树的左孩子
return Left and Right
if not root:
return True
return compare(root.left,root.right)