請實現兩個函式,分別用來序列化和反序列化二叉樹。
序列化二叉樹:把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串。需要注意的是,序列化二叉樹的過程中,如果遇到空節點,需要以某種符號(這裡用#)表示。
二叉樹的反序列化是指:根據某種遍歷順序得到的序列化字串結果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...