《LeetCode筆記55》 序列化二叉樹

2021-10-05 18:24:54 字數 1576 閱讀 6207

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

示例:

你可以將以下二叉樹:

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