劍指offer Python 對稱的二叉樹

2021-10-01 04:57:44 字數 1788 閱讀 6251

請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。

遞迴實現

class

treenode

:def

__init__

(self, x)

: self.val = x

self.left =

none

self.right =

none

class

solution

:def

issymmetrical

(self, proot)

:def

is_mirror

(left, right)

:# 判斷是否為映象

if left is

none

and right is

none

:return

true

elif left is

none

or right is

none

:return

false

if left.val != right.val:

return

false

ret1 = is_mirror(left.left, right.right)

ret2 = is_mirror(left.right, right.left)

return ret1 and ret2

if proot is

none

:return

true

return is_mirror(proot.left, proot.right)

非遞迴實現

class

solution

:def

issymmetrical

(self, proot)

:# write code here

if proot is

none

:return

true

if proot.left is

none

and proot.right is

none

:return

true

p = proot.left

q = proot.right

stack =

[p, q]

# 空節點也可以入棧,為none,但是空節點就沒有左右子節點了。

while stack:

p = stack.pop(

) q = stack.pop(

)if p is

none

and q is

none

:# 都為空繼續

continue

elif p is

none

or q is

none

:# 有乙個不為空,另乙個為空,返回false

return

false

elif p.val != q.val:

# 值不相等,不對稱,返回false

return

false

else

:# 當兩個節點,都不為空,且值相等時,將兩個節點對應的四個子節點

# 按照順序依次入棧, 使之兩兩貼在一塊,出棧的時候一塊出棧,進行比較。

return

true

劍指offer(Python)替換空格

這道題要求是 將乙個字串中的空格替換成 20 有多少個空格就替換成多少個 20 例如 hello world 中間有兩個空格,則需要輸出的形式是 hello 20 20world 字串首尾的空格亦算在內。class solution def replacespace self,s return 20...

劍指offer Python 替換空格

請實現乙個函式,將乙個字串中的每個空格替換成 20 python字串,有replace方法,可以實現替換,第乙個引數是要替換的內容,第二個引數是替換的新內容 能夠快速完成,果然python作為一種高階語言,不太適合做演算法 但是 replace 相當於 insert 在替換 時,會將原字串元素的位置...

《劍指offer》python 動態規劃

動態規劃是利用空間去換取時間的演算法.主要看 1.初始條件 2.重疊子問題 3.狀態轉移方程 題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 coding utf 8 class solution def jumpfloo...