我在这里问的问题是基于www.dailycodingproblem.com
问题3: 给定二叉树的根,实现serialize(root),将树序列化为字符串,并实现反序列化(s),将字符串反序列化回树
下面的代码是我找到的解决方案之一,我想问的问题是:-
对于第42行中的反序列化函数,当我传递一个参数,如
def反序列化器(node):后接返回反序列化器(node),如果输入任何数字,则输出显示“node not defined error”,例如:1,3,2
但是,如果我将参数部分留空,即def deserializer()后跟return deserializer(),它就会起作用
非常感谢您的帮助
#must create a constructor every time we create a class eg: def __init__(self)
class Node:
def __init__(self, v):
self.left = None #none = empty state
self.right = None
self.value = v
class Tree:
def __init__(self):
self.root = None
def addNode(self, node, v1):
if node == None:
self.root = Node(v1)
#argument in Node need not have to be v
else:
if v1 < node.value:
#if 2nd value less than 1st value for example?
if not node.left:
node.left = Node(v1) #will not update value
else:
#if it is node.left,update value
self.addNode(node.left, v1)
else:
if not node.right:
node.right = Node(v1)
else:
self.addNode(node.right, v1)
def deserialize(s):
values = iter(s.split(','))
def deserializer(): #why putting def deserializer(node) gives me "node undefined error"?)
val = next(values)
if val == '?':
return None
else:
node = Node(int(val))
node.left = deserializer()
node.right = deserializer()
return node
return deserializer() #why putting return deserializer(node) gives me "node undefined error"?)
if __name__ == '__main__':
# Read input, numbers separated by commas
numbers = [int(n) for n in input().split(',')]
theTree = Tree()
for number in numbers:
theTree.addNode(theTree.root, number)
s2 = serialize(deserialize(s1))
print(s2)
目前没有回答
相关问题 更多 >
编程相关推荐