題目
101. 對稱二叉樹
給定一個二叉樹,檢查它是否是鏡像對稱的,
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的,
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的:
1
/ \
2 2
\ \
3 3
進階:
你可以運用遞回和迭代兩種方法解決這個問題嗎?
解題思路
- 遞回,
- 把兩個根節點視為兩棵樹,然后遍歷兩棵樹,判斷是否為對稱二叉樹,
- 判斷方法:1節點的左是否等于2節點的右;1節點的右是否等于2節點的左,
Code
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
def dfs(p ,q):
if not p and not q:
return True
elif not p or not q:
return False
elif p.val != q.val:
return False
else:
return dfs(p.left, q.right) and dfs(p.right, q.left)
return dfs(root.left, root.right)
運行結果

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/400469.html
標籤:其他
下一篇:一般程式員正常會會幾種語言?
