【发布时间】:2021-06-24 13:33:55
【问题描述】:
我正在尝试编写用于序列化和反序列化二叉树的代码。我成功地序列化了树,但是,我发现反序列化很困难。 (我知道有很多解决方案可用。但是,我更喜欢在查找之前先自学)
考虑下面的树
__1
/ \
2 3
/ \ \
4 5 6
我的序列化模块输出
[1, 2, 4, None, None, 5, None, None, 3, None, 6, None, None]
我的代码是
def serialize(root):
nodes = list()
stack = [root]
while len(stack):
node = stack.pop()
if node is not None:
nodes.append(node.value)
if node.right:
stack.append(node.right)
else:
nodes.append(None)
if node.left:
stack.append(node.left)
else:
nodes.append(None)
return nodes
- 如何在不递归的情况下反序列化?
- 是否有反序列化的递归版本?
- 我做的树遍历,有名字吗?
- 是否有递归版本的序列化?
也感谢任何指向有用材料的指针。
【问题讨论】:
-
请只关注一个问题。你总是可以问一个新问题。你有什么尝试吗?你被困在哪里了?
标签: data-structures tree binary-tree binary-search-tree traversal