本文共 960 字,大约阅读时间需要 3 分钟。
【思路】
不为空的时候,只要我们重新定义一个函数 restruct,判断左右子树,
当两个子树为空的时候,直接返回True,这时候肯定是对称的
再判断返回False的情况:两个子树有一个为空就要返回False,当然左右子树的值不相等也要返回False
接下来,我们利用递归的思想,将左子树的左边和右子树的右边做为函数的输入,进行判断,不断递归,同理将左子树的右边和右子树的左边作为输出同时返回结果
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def isSymmetrical(self, pRoot): # write code here if not pRoot: return True return self.restruct(pRoot.left, pRoot.right)# 左子树的左节点与右子树的右节点相等,# 左子树的右节点与右子树的左节点相等 def restruct(self,A,B): if not A and not B: return True if not A or not B or A.val != B.val: return False if A.val == B.val: return self.restruct(A.left,B.right) and self.restruct(A.right,B.left) return False
https://cuijiahua.com/blog/2018/01/basis_58.html
https://www.cnblogs.com/cong3Z/p/12939870.html