日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

二叉树序列化与反序列化相关题目(Leetcode题解-Python语言)

發布時間:2023/12/4 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树序列化与反序列化相关题目(Leetcode题解-Python语言) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

297. 二叉樹的序列化與反序列化(劍指 Offer 37. 序列化二叉樹)(劍指 Offer II 048. 序列化與反序列化二叉樹)

class Codec:def serialize(self, root):"""Encodes a tree to a single string.:type root: TreeNode:rtype: str"""if not root:return ''return str(root.val) + ',' + str(self.serialize(root.left)) + ',' + str(self.serialize(root.right))def deserialize(self, data):"""Decodes your encoded data to tree.:type data: str:rtype: TreeNode"""if not data:return Nonedef dfs(dataList):node = dataList.pop(0)if node == '':returnroot = TreeNode(int(node))root.left = dfs(dataList)root.right = dfs(dataList)return rootdataList = data.split(',')return dfs(dataList)

序列化的思路就是前序遍歷,將各個節點值之間通過 ‘,’ 連接起來;反序列化時,首先根據 ‘,’ 進行分隔,得到的列表就是各個節點的值(字符串),然后進行深度遍歷dfs,對每個節點進行樹節點構建,左右子樹則是遞歸。

449. 序列化和反序列化二叉搜索樹

由于二叉搜素樹也是二叉樹,所以可以使用上一題的題解。官方題解給出了優化,但是不太好理解,暫時不掌握。

428. 序列化和反序列化 N 叉樹

class Codec:def serialize(self, root: 'Node') -> str:"""Encodes a tree to a single string.:type root: Node:rtype: str"""if not root:return ''data = ''data += str(root.val) + ',' + str(len(root.children))for child in root.children:data += ',' + self.serialize(child)return datadef deserialize(self, data: str) -> 'Node':"""Decodes your encoded data to tree.:type data: str:rtype: Node"""if not data:return Nonedef dfs(dataList) -> 'Node':node = dataList.pop(0)if node == '':returnroot = Node(int(node))root.children = []size = int(dataList.pop(0))for _ in range(size):root.children.append(dfs(dataList))return rootdataList = data.split(',')return dfs(dataList)

同樣的思路,只不過序列化時的前序遍歷要用 N 叉樹的方法,而反序列化時的 dfs 也是要改為 N 叉樹的寫法,其余都一樣。

總結

以上是生活随笔為你收集整理的二叉树序列化与反序列化相关题目(Leetcode题解-Python语言)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。