# 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
'''
第100题
'''
class Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
# 前序遍历
# if p == None and q == None:
# return True
# elif p == None or q == None:
## elif (not p) ^ (not q): # 使用异或操作
# return False
# elif p.val != q.val:
# return False
# else:
# return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
# 层次遍历
if p == None and q == None:
return True
elif p == None or q == None:
return False
queue1 = collections.deque([p])
queue2 = collections.deque([q])
while queue1 and queue2:
p = queue1.popleft()
q = queue2.popleft()
if p.val != q.val:
return False
else:
# 通过异或操作判断两个二叉树是否相同
if (not p.left) ^ (not q.left):
return False # 结构不同,返回False
if (not p.right) ^ (not q.right):
return False
if p.left: # 当结构相同时,将子节点加入队列
queue1.append(p.left)
queue2.append(q.left)
if q.right:
queue1.append(p.right)
queue2.append(q.right)
return not queue1 and not queue2 # 最后当两个队列都为空时,
力扣刷题-100 相同的树
最新推荐文章于 2024-07-24 15:19:08 发布