使用二叉链表作为二叉树的储存结构,设计一个算法来判断两棵树是否相等,并给出完整代码
时间: 2024-12-10 20:38:25 浏览: 13
考研常考的二叉树相关算法总结(详细全面,PDF版)
使用二叉链表存储二叉树是一种常见的数据结构表示方式,因为它允许高效的遍历操作。判断两棵二叉树是否相等,即它们的节点值对应位置相同,左右子树也分别相等。可以采用深度优先搜索(DFS)递归的方式来实现这个算法。这里提供一个Python版本的解决方案:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def isSameTree(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 isSameTree(p.left, q.left) and isSameTree(p.right, q.right)
# 示例:
# 树1: 1
# / \
# 2 3
# / \ \
# 4 5 6
#
# 树2: 1
# / \
# 2 3
# / \
# 4 5
# 这两个树就不相等,因为树2的左子树的右子节点6不存在于树1中。
```
阅读全文