劍指offer 61 序列化二叉樹 python

2021-10-07 02:38:22 字數 1198 閱讀 2496

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

二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序、中序、後序、層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點(#),以 ! 表示乙個結點值的結束(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 方法一 使用深度遍歷,判斷每個節點是不是平衡二叉樹,這種從上至下的方法...