請實現兩個函式,分別用來序列化和反序列化二叉樹
二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序、中序、後序、層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點(#),以 ! 表示乙個結點值的結束(value!)。
二叉樹的反序列化是指:根據某種遍歷順序得到的序列化字串結果str,重構二叉樹。
例如,我們可以把乙個只有根節點為1的二叉樹序列化為"1,",然後通過自己的函式來解析回這個二叉樹
# -*- 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
res =
ifnot root:
return
'#'str
(root.val)))
)return
','.join(res)
defdeserialize
(self, s)
:# write code here
l = s.split(
',')
root =
none
self.index +=
1if self.index >=
len(l)
: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(61)序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 首先拿到題目時候,我先想到的是什麼是序列化二叉樹?序列化主要就是在前後端互動時候需要轉換下,畢竟網路傳輸的是流式資料 二進位制或者文字 而不是物件。所以序列化二叉樹就是轉化成字串。之前解決重建二叉樹問題時候,我們可以知道,兩個遍歷序列就可以確定一顆二叉...
劍指Offer 61 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 使用前序遍歷,將遇到的結點新增到字串中,遇到null則將乙個 新增要序列化字串中。反序列化時,每次讀取根結點,然後讀取其左結點,遇到 null 時,返回上層。樹結點定義 public class treenode 實現 public class sol...
劍指offer 61平衡二叉樹
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。題解 方法一 使用深度遍歷,判斷每個節點是不是平衡二叉樹,這種從上至下的方法會導致底層的節點重複判斷多次 方法二 使用後序遍歷判斷,這種方法為自下而上,每個節點只需要判斷一次即可 1 方法一 使用深度遍歷,判斷每個節點是不是平衡二叉樹,這種從上至下的方法...