编写算法判断两棵二叉树T和T’是否相似(两棵二叉树相似是指它们具有相同结构)。
时间: 2024-11-20 19:36:02 浏览: 11
判断两棵树T和T'是否相似,即它们的结构完全相同,可以通过递归的方式进行比较。这里提供一种常见的算法思路,称为“深度优先遍历”(Depth First Search,DFS),同时对比两个树的根节点以及它们的左、右子树。
```python
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def isSameTree(p, q):
if p is None and q is None: # 都为空,说明结构相同
return True
elif p is None or q is None: # 其中一个为空,说明结构不同
return False
else: # 否则,比较值和子树
return p.val == q.val and \
isSameTree(p.left, q.left) and \
isSameTree(p.right, q.right)
# 示例
p = TreeNode(1)
p.left = TreeNode(2)
p.right = TreeNode(3)
q = TreeNode(1)
q.left = TreeNode(2)
q.right = TreeNode(3)
print(isSameTree(p, q)) # 输出:True
```
在这个算法中,首先检查两个根节点是否相等,如果不等,则返回False。然后递归地分别对左右子树进行相同的比较。如果遍历完两个树的所有节点,且对应位置的节点都相等,那么两棵树就是相似的,返回True;反之则返回False。
阅读全文