您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Python对称二叉树该怎么理解
## 一、什么是对称二叉树
对称二叉树(Symmetric Binary Tree)是指一棵二叉树的左右子树在结构上镜像对称。具体表现为:
- 根节点的左右子树互为镜像
- 左子树的左孩子与右子树的右孩子对称
- 左子树的右孩子与右子树的左孩子对称
```python
# 示例对称二叉树结构
1
/ \
2 2
/ \ / \
3 4 4 3
需要比较: - 左子树的左孩子 vs 右子树的右孩子 - 左子树的右孩子 vs 右子树的左孩子
def isSymmetric(root):
def compare(left, right):
if not left and not right:
return True
if not left or not right:
return False
return left.val == right.val and \
compare(left.left, right.right) and \
compare(left.right, right.left)
return compare(root.left, root.right) if root else True
使用队列进行层序遍历的变种:
from collections import deque
def isSymmetric(root):
if not root:
return True
queue = deque([(root.left, root.right)])
while queue:
left, right = queue.popleft()
if not left and not right:
continue
if not left or not right or left.val != right.val:
return False
queue.append((left.left, right.right))
queue.append((left.right, right.left))
return True
# 错误示例:未处理空树情况
def isSymmetric(root):
return root.left == root.right # 当root为None时会报错
# 错误示例:只比较了结构没比较值
def isSymmetric(root):
if not root:
return True
return root.left and root.right # 漏了值比较
方法 | 时间复杂度 | 空间复杂度 |
---|---|---|
递归 | O(n) | O(h) |
迭代 | O(n) | O(n) |
(其中n为节点数,h为树高度)
理解对称二叉树的关键在于掌握”镜像比较”的思想,这种分治思想在解决许多二叉树问题时都非常有用。 “`
注:实际文章约900字(含代码),这里展示的是核心内容框架。如需完整版可扩展每个部分的详细说明和示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。