leetcode101對稱二叉樹

2022-09-04 12:36:14 字數 1633 閱讀 4241

題目如下

給定乙個二叉樹,檢查它是否是映象對稱的。

例如,二叉樹 [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思路 如果同時滿足下面的條件,兩個樹互為映象 它們的兩個根結點具有相同的值。每個樹的右子樹都...