如题所示:
相同的树
解决树结构的题,理解和运用递归很重要。相同的树指的是:两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
- 写递归出口:当p和q都是空时,两种情况。第一种是两棵树都为空树,p, q作为根节点都为空,直接返回True代表这两棵树相同。第二种是p, q不是根节点而是由之前树对应的节点结构和值都相等走到了这一步。
- 当p和q都不为空时继续对p和q的左右子树进行递归判断,左子树返回的结果保存在resLeft中, 右子树返回的结果保存在resRight中,返回的是resLeft和resRight的与值, 只有二者都为True时才返回True。
- 其他情况比如p.val 和q.val不等以及p和q中只有一个为空时都返回False。
总结:解决树相关的题目,递归出口,递归条件,以及对树结构的递归必须要很清楚。
代码如下:
class Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
if p is None and q is None:
return True
if(p and q) and (p.val == q.val):
resLeft = self.isSameTree(p.left, q.left)
resRight = self.isSameTree(p.right, q.right)
return resLeft and resRight
else:
return False