# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。