請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。
遞迴實現
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...