当前位置:实例文章 » 其他实例» [文章]leetcode100.相同的树

leetcode100.相同的树

发布人:shili8 发布时间:2025-01-31 17:59 阅读次数:0

**相同的树**

给定两个根结点为 `null` 的二叉树,判断它们是不是相同的。

**示例1:**

输入:`root1 = [3,9,20,null,null,15,7], root2 = [3,9,20,null,null,15,7]`
输出:`true`

**示例2:**

输入:`root1 = [3,5,1,6,0,9,2,null,1], root2 = [3,5,1,6,0,9,2,null,1]`
输出:`true`

**示例3:**

输入:`root1 = [3,5,1,6,0,9,2,null,1], root2 = [3,5,1,6,0,9,2,null,4]`
输出:`false`

**解决方案**

我们可以使用递归的方式来判断两个树是否相同。具体来说,我们可以定义一个函数 `isSameTree(root1, root2)`,这个函数会比较两个树的每个结点,并返回一个布尔值表示它们是否相同。

# Definition for a binary tree node.
class TreeNode:
 def __init__(self, x):
 self.val = x self.left = None self.right = Nonedef isSameTree(root1, root2):
 """
 判断两个树是否相同 Args:
 root1 (TreeNode): 第一个树的根结点 root2 (TreeNode): 第二个树的根结点 Returns:
 bool:两个树是否相同 """
 # 如果两个树都为空,则它们是相同的 if not root1 and not root2:
 return True # 如果一个树为空,而另一个树不为空,则它们是不相同的 if not root1 or not root2:
 return False # 如果两个树的值不同,则它们是不相同的 if root1.val != root2.val:
 return False # 递归比较左子树和右子树 return isSameTree(root1.left, root2.left) and isSameTree(root1.right, root2.right)


**测试**

我们可以使用以下代码来测试这个函数:

# 创建两个相同的树root1 = TreeNode(3)
root1.left = TreeNode(9)
root1.right = TreeNode(20)
root1.right.left = TreeNode(15)
root1.right.right = TreeNode(7)

root2 = TreeNode(3)
root2.left = TreeNode(9)
root2.right = TreeNode(20)
root2.right.left = TreeNode(15)
root2.right.right = TreeNode(7)

# 测试函数print(isSameTree(root1, root2)) # 输出:true# 创建两个不同的树root1 = TreeNode(3)
root1.left = TreeNode(5)
root1.right = TreeNode(1)
root1.right.left = TreeNode(6)
root1.right.right = TreeNode(0)
root1.right.right.right = TreeNode(9)
root1.right.right.right.right = TreeNode(2)

root2 = TreeNode(3)
root2.left = TreeNode(5)
root2.right = TreeNode(1)
root2.right.left = TreeNode(6)
root2.right.right = TreeNode(4)

# 测试函数print(isSameTree(root1, root2)) # 输出:false


**总结**

这个解决方案使用递归的方式来判断两个树是否相同。它首先检查两个树是否都为空,如果是,则它们是相同的。如果一个树为空,而另一个树不为空,则它们是不相同的。如果两个树的值不同,则它们也是不相同的。最后,它递归比较左子树和右子树,以确定整个树是否相同。

相关标签:算法数据结构
其他信息

其他资源

Top