當(dāng)前位置:
首頁(yè) >
297. Serialize and Deserialize Binary Tree
發(fā)布時(shí)間:2024/5/7
50
豆豆
生活随笔
收集整理的這篇文章主要介紹了
297. Serialize and Deserialize Binary Tree
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Title
序列化是將一個(gè)數(shù)據(jù)結(jié)構(gòu)或者對(duì)象轉(zhuǎn)換為連續(xù)的比特位的操作,進(jìn)而可以將轉(zhuǎn)換后的數(shù)據(jù)存儲(chǔ)在一個(gè)文件或者內(nèi)存中,同時(shí)也可以通過(guò)網(wǎng)絡(luò)傳輸?shù)搅硪粋€(gè)計(jì)算機(jī)環(huán)境,采取相反方式重構(gòu)得到原數(shù)據(jù)。
請(qǐng)?jiān)O(shè)計(jì)一個(gè)算法來(lái)實(shí)現(xiàn)二叉樹的序列化與反序列化。這里不限定你的序列 / 反序列化算法執(zhí)行邏輯,你只需要保證一個(gè)二叉樹可以被序列化為一個(gè)字符串并且將這個(gè)字符串反序列化為原始的樹結(jié)構(gòu)。
示例:
你可以將以下二叉樹:1/ \2 3/ \4 5序列化為 "[1,2,3,null,null,4,5]"說(shuō)明: 不要使用類的成員 / 全局 / 靜態(tài)變量來(lái)存儲(chǔ)狀態(tài),你的序列化和反序列化算法應(yīng)該是無(wú)狀態(tài)的。
Code
import collections# Definition for a binary tree node. class TreeNode(object):def __init__(self, x):self.val = xself.left = Noneself.right = Noneclass Codec:def serialize(self, root):"""Encodes a tree to a single string.:type root: TreeNode:rtype: str"""if not root:return "[]"res, queue = [], collections.deque()queue.append(root)while queue:node = queue.popleft()if node:res.append(str(node.val))queue.append(node.left)queue.append(node.right)else:res.append("null")return f"[{','.join(res)}]"def deserialize(self, data):"""Decodes your encoded data to tree.:type data: str:rtype: TreeNode"""if data == "[]":return Nonevalues, index = data[1: -1].split(","), 1root = TreeNode(int(values[0]))queue = collections.deque()queue.append(root)while queue:node = queue.popleft()if values[index] != "null":node.left = TreeNode(int(values[index]))queue.append(node.left)index += 1if values[index] != "null":node.right = TreeNode(int(values[index]))queue.append(node.right)index += 1return root# Your Codec object will be instantiated and called as such: # codec = Codec() # codec.deserialize(codec.serialize(root)) 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的297. Serialize and Deserialize Binary Tree的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 14. Longest Common P
- 下一篇: 1014. Best Sightseei