二叉樹的序列化與反序列化(Python版)

2021-10-08 08:45:55 字數 1258 閱讀 1726

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

您需要確保二叉樹可以序列化為字串,並且可以將此字串反序列化為原始樹結構。

深度優先遍歷

1、序列化的過程可以採用深度優先遍歷方法,此處採用先序遍歷

2、對於將一棵二叉樹的先序遍歷結果(採用列表儲存),第乙個元素為二叉樹的根節點,剩餘元素可以看成由根節點的左右子樹構成,而每一棵子樹又是一棵二叉樹。

3、對於2中的描述,故可以採用遞迴的方法,由一棵二叉樹的先序遍歷結果來還原一棵樹(由於序列化過程中會將葉子節點的空指標儲存,故可以還原)。

class

solution

:def

serialize

(self, root)

:"""encodes a tree to a single string.

:type root: treenode

:rtype: str

"""treelist =

defdfs

(node)

:# 深度優先遍歷之先序遍歷

if node:

str(node.val)

) dfs(node.left)

dfs(node.right)

else

:'#'

) dfs(root)

return

','.join(treelist)

defdeserialize

(self, data)

:"""decodes your encoded data to tree.

:type data: str

:rtype: treenode

"""defdfs()

: first = vals.pop(0)

# 每個節點可以看做一棵樹的根節點

if first ==

'#':

return

none

else

: node = treenode(

int(first)

) node.left = dfs(

) node.right = dfs(

)return node

vals = data.split(

',')

return dfs(

)

二叉樹 序列化與反序列化

序列化 serialization 在電腦科學的資料處理中,是指將資料結構或物件狀態轉換成可取用格式 例如存成檔案,存於緩衝,或經由網路中傳送 以留待後續在相同或另一台計算機環境中,能恢復原先狀態的過程。從一系列位元組提取資料結構的反向操作,是反序列化 也稱為解編組 deserialization ...

二叉樹序列化與反序列化

層序遍歷 實現二叉樹的序列化與反序列化。序列化二叉樹的方式有很多,最經典的就是將一顆二叉樹轉化為字串,這樣方便儲存到檔案。反序列化時只需解析這個字串,提取出每個節點的內容資訊,將二叉樹還原。二叉樹序列化有許多應用,比如 oj 平台在判斷你提交的二叉樹是否正確時,往往是將你的二叉樹序列化成字串,然後與...

序列化 反序列化二叉樹

設計乙個演算法能夠實現序列化和反序列化一棵二叉樹 注意,不是二叉搜尋樹bst 這裡的序列化指的是將一棵二叉樹儲存到檔案中,反序列化就是從檔案中讀取二叉樹結點值重構原來的二叉樹。前一篇文章儲存二叉搜尋樹到檔案中 解決了儲存一棵二叉搜尋樹到檔案中的問題,但是由於本題目的意思是要把一棵二叉樹儲存到檔案中並...