在Python中将字符串反序列化回树的函数中的参数问题

2024-05-28 19:28:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这里问的问题是基于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)

Tags: selfrightnonenodereturnif序列化value

热门问题