請實現兩個函式,分別用來序列化和反序列化二叉樹
可以用前序遍歷來序列化二叉樹,反序列化的時候其實就是一步步將小樹變成大樹。
# -*- 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 刷題 序列化二叉樹
題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點...
序列化二叉樹
問題 實現兩個函式,序列化乙個二叉樹。如果之前做過乙個題目 用一顆二叉樹的中序和前序還原二叉樹的話,最直觀的解法是用把二叉樹系列化成乙個中序序列和乙個前序序列,但是這個方法的缺陷是每個節點上的值不能相同,而且需要將整個序列都讀入之後才能序列化,如果序列到乙個流中,在從流中讀出來還原二叉樹效率將會比較...