刷題 序列化二叉樹

2021-08-21 06:12:28 字數 976 閱讀 6395

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

可以用前序遍歷來序列化二叉樹,反序列化的時候其實就是一步步將小樹變成大樹。

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

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution:

def__init__

(self):

self.index = -1

defserialize

(self, root):

# write code here

if root == none:

return

'#,'

return str(root.val) + ',' + self.serialize(root.left) + self.serialize(root.right)

defdeserialize

(self, s):

# write code here

self.index += 1

l = s.split(',')

root = none

if self.index >= len(s):

return

none

if l[self.index] != '#':

root = treenode(int(l[self.index]))

root.left = self.deserialize(s)

root.right = self.deserialize(s)

return root

也可以用層次遍歷來序列化,序列化和反序列化都利用佇列進行操作。

序列化二叉樹和反序列化二叉樹

題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點...

劍指Offer 刷題 序列化二叉樹

題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點...

序列化二叉樹

問題 實現兩個函式,序列化乙個二叉樹。如果之前做過乙個題目 用一顆二叉樹的中序和前序還原二叉樹的話,最直觀的解法是用把二叉樹系列化成乙個中序序列和乙個前序序列,但是這個方法的缺陷是每個節點上的值不能相同,而且需要將整個序列都讀入之後才能序列化,如果序列到乙個流中,在從流中讀出來還原二叉樹效率將會比較...