題目如下
給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [1,
2,2,
3,4,
4,3] 是對稱的。
1/ \ 2
2/ \ / \34
43但是下面這個 [1,
2,2,null,
3,null,
3] 則不是映象對稱的:
1/ \
22\ \
33說明:
如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。
使用遞迴的方法對比左右兩個子樹的節點是否相等
class
solution
(object):
defissymmetric
(self, root)
:"""
:type root: treenode
:rtype: bool
"""return self.check(root.left, root.right)
defcheck
(self, node1, node2)
:if node1 ==
none
and node2 ==
none
:return
true
if node1 ==
none
or node2 ==
none
:return
false
return node1.val == node2.val and self.check(node1.left, node2.right)
and self.check(node1.right, node2.left)
乙個遞迴加條件判斷就寫完了,有什麼好說的,我帶你們打哈哈哈哈哈哈哈。
bfs我使用乙個佇列來輔助實現
每次以二為單位進行出佇列,然後判斷我們出佇列的兩個節點是否有乙個為空,還是是否都為空,還有值是否相等,然後將這兩個節點的左右 右左節點分別入隊,迴圈條件為佇列不為空,突然想到這個好像拿棧實現也可以。
**如下
class
solution
(object):
defissymmetric
(self, root)
:"""
:type root: treenode
:rtype: bool
"""queue =
ifnot root:
return
true
while queue:
left_node = queue.pop(0)
right_node = queue.pop(0)
ifnot left_node and
not right_node:
continue
ifnot left_node or
not right_node:
return
false
if left_node.val != right_node.val:
return
false
)return
true
LeetCode 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 說明 如果你可以遞迴地和迭代地解決它就獎勵你點數。建立乙個映象的樹,然...
LeetCode(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說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。這道題也是劍指offer上的2...
leetcode 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思路 如果同時滿足下面的條件,兩個樹互為映象 它們的兩個根結點具有相同的值。每個樹的右子樹都...