本文主要是介绍LeetCode 297. 二叉树的序列化与反序列化(层次遍历),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Description
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。
请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。
示例: 你可以将以下二叉树:1/ \2 3/ \4 5序列化为 "[1,2,3,null,null,4,5]"来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Solution
层次遍历
class Codec:def serialize(self, root):if not root: return "[]"queue = collections.deque()queue.append(root)res = []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 '[' + ','.join(res) + ']'def deserialize(self, data):if data=='[]':return Nonevals, i = data[1:-1].split(','), 1root = TreeNode(int(vals[0]))queue = collections.deque()queue.append(root)while queue:node = queue.popleft()if vals[i] != "null":node.left = TreeNode(int(vals[i]))queue.append(node.left)i += 1if vals[i] != "null":node.right = TreeNode(int(vals[i]))queue.append(node.right)i += 1return root
这篇关于LeetCode 297. 二叉树的序列化与反序列化(层次遍历)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!