LeetCode刷题笔记第100题:相同的树
想法:
想要判断两棵树是否相同,则需要判断对应位置节点是否相同,因此需要通过递归判断树中所有的节点。在判断对应节点时,需要判断两棵树中对应位置节点是否存在并相同,一旦有不同则返回False,若相同则递归判断余下节点,直至最后的位置节点是否相同,当两棵树中节点均遍历完成,并且没有不相同的多余节点时判断结束,此时两棵树相同。
# 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 isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
# 相同的树
# 当两棵树都为空时,此时两棵树相同,返回True
if not p and not q:
return True
# 当两棵树中有一棵不为空时说明两棵树不同,返回False
elif not p or not q:
return False
# 两棵树中当前节点数值不相同时则返回False
elif p.val != q.val:
return False
else:
# 循环递归判断两棵树中剩下的节点
return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)