数据结构判断两颗二叉树是否相等
时间: 2023-10-26 09:17:55 浏览: 198
判断两颗二叉树是否相等,需要比较它们的结构和节点值是否完全一致。
可以通过递归的方式,从根节点开始比较每个节点的值是否相等,以及左右子树是否相同。如果都相等,则说明两颗二叉树相等。
这个递归过程可以这样实现:
```python
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)
```
在这个实现中,首先判断两个节点是否为空,如果都为空,则说明已经比较到了叶子节点,返回 True。如果其中一个节点为空,另一个节点不为空,则说明两个节点不相等,返回 False。如果两个节点都不为空,则比较它们的值是否相等,以及它们的左右子树是否相等,如果都相等,则返回 True,否则返回 False。
这个算法的时间复杂度是 O(n),其中 n 是二叉树中节点的个数,因为需要遍历每个节点进行比较。
阅读全文