下面是一个示例解决方法,使用递归来比较两棵树的结构和值是否相等。
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def is_same_tree(p: TreeNode, q: TreeNode) -> bool:
# 如果两棵树都为空,则认为它们相等
if not p and not q:
return True
# 如果其中一棵树为空,而另一棵树不为空,则认为它们不相等
if not p or not q:
return False
# 如果当前节点的值不相等,则认为两棵树不相等
if p.val != q.val:
return False
# 递归地比较左子树和右子树
return is_same_tree(p.left, q.left) and is_same_tree(p.right, q.right)
示例用法:
# 创建两棵相同的树
tree1 = TreeNode(1)
tree1.left = TreeNode(2)
tree1.right = TreeNode(3)
tree2 = TreeNode(1)
tree2.left = TreeNode(2)
tree2.right = TreeNode(3)
# 比较两棵树是否相等
print(is_same_tree(tree1, tree2)) # 输出: True
# 创建两棵不同的树
tree3 = TreeNode(1)
tree3.left = TreeNode(2)
tree4 = TreeNode(1)
tree4.right = TreeNode(2)
# 比较两棵树是否相等
print(is_same_tree(tree3, tree4)) # 输出: False