請實現兩個函式,分別用來序列化和反序列化二叉樹。
示例:
你可以將以下二叉樹:序列化:二叉樹的層次遍歷,使用乙個列表儲存節點遍歷的順序(每次需要判斷列表剩餘的是否全為空節點,若是則結束)。1/ \
2 3
/ \4 5
序列化為 "[1,2,3,null,null,4,5]"
反序列化:用乙個列表儲存生成節點的順序,每個節點分配兩個子節點,空節點不進行記錄。
# definition for a binary tree node.
# class treenode(object):
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class codec:
def serialize(self, root):
"""encodes a tree to a single string.
:type root: treenode
:rtype: str
"""if root is none:
return
data =
node =
while(node):
if any(node) is false:
break
if node[0] is none:
else:
del node[0]
print(data)
return data
def deserialize(self, data):
"""decodes your encoded data to tree.
:type data: str
:rtype: treenode
"""l = len(data)
if l==0:
return none
root = treenode(data[0])
node =
j = 0
i = 1
while(iif data[i] is not none:
node[j].left = treenode(data[i])
i+=1
if i==l:
break
if data[i] is not none:
node[j].right = treenode(data[i])
i+=1
j+=1
return root
# your codec object will be instantiated and called as such:
# codec = codec()
# codec.deserialize(codec.serialize(root))
C 學習筆記25 序列化和反序列化
序列化 serialization 是將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程,序列把物件轉換成有序位元組流,以便在網路上傳輸或者儲存在本地檔案中 序列化的主要目的有三個 1 以某種儲存形式使自定義物件持久化 2 將物件從乙個地方傳遞到另乙個地方 3 使程式更具維護。對於需要序列化的物件,需...
A08 序列化與反序列化
using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace a01 serializeanddeserialize s...
C 語言 08 序列化與反序列化
a.序列化 是將物件的狀態儲存到特定儲存介質中的過程 i.語法 public void serialize 序列化過程的檔案流,儲存的物件 b.返序列化 是從特定儲存介質中將資料重新構建物件的過程 i.語法 public object deserialize 檔案流 i.注意 deserialize...