請實現兩個函式,分別用來序列化和反序列化二叉樹
首先這道題目是要有兩個問題,第乙個是把一棵二叉樹按照前序遍歷的方式變成乙個字串。第二個是把乙個字串變成乙個二叉樹。對於第乙個問題來說,我們要對這棵樹進行乙個前序遍歷,按照中左右的方式放入列表中,如果節點為空,則插入#,最後.join(,)來實現列表到字串的轉換。第二個問題是我們採用了遞迴的方式來建立二叉樹,分別是根節點,左節點和右節點,符合前序二叉樹的簡歷方式,最後返回根節點即可。
# -*- coding:utf-8 -*-
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class solution:
def serialize(self, root):
# write code here
res=
def preorder(root):
if not root:#空節點
else:
preorder(root.left)
preorder(root.right)
preorder(root)
return ','.join(res)
def deserialize(self, s):
# write code here
res=s.split(',')
def build():
if res:
tmp=res.pop(0)
if tmp=='#':
return none
else:
root=treenode(int(tmp))
root.left=build()
root.right=build()
return root
return build()
劍指offer 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹。首先得理解題目的意思,序列化就是返回乙個帶有 和逗號的字串。反序列化就是根據帶有 和逗號的字串返回一棵二叉樹。比如對於二叉樹 1 2 3 4 5 6 7來講,序列化的結果是1,2,3,4,7,5,而反序列化的結果則是輸出一棵二叉樹。public cla...
劍指Offer 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 根據前面的面試題重建二叉樹,我們知道可以從前序遍歷和中序遍歷構造出一棵二叉樹。受此啟發,我們可以先把一棵二叉樹序列化成乙個前序遍歷序列和乙個中序序列的結合,然後再反序列化時通過這兩個序列重構出原二叉樹。但是這個思路有兩個缺點。乙個缺點是該方法要求二叉樹...
劍指offer 序列化二叉樹
題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 思路 二叉樹被建立成檔案的過程叫做序列化,而從檔案來重新構造二叉樹的過程叫做反序列化。序列化可以這樣來做,利用先序遍歷二叉樹,當遍歷的節點不為空時,將節點的值變為字串並在後面加上!來表示分割,當對應位置的節點為空時,在字串後面加上 反序列化就...