设计一个递归算法判断两棵二叉树是否同构
时间: 2024-10-09 10:03:20 浏览: 46
判断两棵二叉树同构的C程序
4星 · 用户满意度95%
设计一个递归算法来判断两棵二叉树是否同构通常涉及到两个关键步骤:首先比较根节点,然后对左右子树进行递归对比。如果两棵树的根节点值相等,并且它们的左子树和右子树都是同构的,那么这两棵树就被认为是同构的。
以下是递归算法的基本思路:
```python
def isIsomorphic(root1, root2):
# 如果两个根节点为空或者都为空,则它们是同构的
if not root1 and not root2:
return True
elif not root1 or not root2: # 若其中一个空,另一个不空则不是同构的
return False
# 检查当前节点的值以及其子树是否同构
if root1.val != root2.val: # 如果根节点值不同,不可能同构
return False
# 使用递归函数分别检查左子树和右子树
return isIsomorphic(root1.left, root2.left) and isIsomorphic(root1.right, root2.right)
```
在这个算法中,`root1` 和 `root2` 分别代表两棵树的根节点,我们首先检查它们的值是否相等,然后递归地检查它们的左子树和右子树是否也满足同构条件。
阅读全文