劍指Offer python 37 序列化二叉樹

2021-09-25 09:02:13 字數 1313 閱讀 3990

請實現兩個函式,分別用來序列化和反序列化二叉樹。

序列化二叉樹:把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串。需要注意的是,序列化二叉樹的過程中,如果遇到空節點,需要以某種符號(這裡用#)表示。

二叉樹的反序列化是指:根據某種遍歷順序得到的序列化字串結果str,重構二叉樹。

先序序列化結果重構二叉樹:分割二叉樹的序列化字串,遍歷nodes陣列建立二叉樹,如果當前遍歷元素非 # 則作為乙個結點插入樹中作為上一結點的左兒子,當前遍歷元素為 # 則表示此子樹已結束,遍歷下一元素作為上一結點的右兒子。

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

serialize

(self, root)

:# write code here

vallist =

defpreorder

(root):if

not root:

'#')

else

:str

(root.val)

) preorder(root.left)

preorder(root.right)

preorder(root)

return

' '.join(vallist)

defdeserialize

(self, s)

:# write code here

vallist =

[val for val in s.split()]

# 利用分隔好的字串生成的陣列生成列表

defdepre()

:if vallist:

val = vallist.pop(0)

if val ==

"#":

return

none

node = treenode(

int(val)

) node.left = depre(

) node.right = depre(

)return node

return depre(

)

劍指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...