Python 用括号处理输入

Python 用括号处理输入,python,Python,我需要帮助来操作代码的输入,输入通过一系列带值的括号插入到一个二进制搜索树中,装载树的代码已经准备好了问题只是处理输入 输入如下: def OrganizarArvore(self, string, raiz_atual): if self.raiz is None: if string[1] != ')': self.raiz = No(int(string[1])) self.OrganizarArvore(string[2:-

我需要帮助来操作代码的输入,输入通过一系列带值的括号插入到一个二进制搜索树中,装载树的代码已经准备好了问题只是处理输入

输入如下:

def OrganizarArvore(self, string, raiz_atual):
    if self.raiz is None:
        if string[1] != ')':
            self.raiz = No(int(string[1]))
        self.OrganizarArvore(string[2:-1], self.raiz)
    else:
        if raiz_atual.left is None:
            raiz_atual.left = No(int(string[1]))
            self.OrganizarArvore(string[2:-1], raiz_atual.left)
        else:
            self.OrganizarArvore(string[2:-1], raiz_atual.left)
(12(7(3)()(10)(11)())(23(17)()(31)())

基本上,根(左)(右),在这种情况下,我不知道如何在树上添加这些值,例如,12到根,7到右,等等。。。 我的代码:


但是不起作用。

为这种格式编写递归解析器非常容易。如果有类似于
()
的大小写,则返回
None
。否则调用相同的解析器函数来解析左子树和右子树,并使用值和两个子树创建一个节点。您只需在
后查找1个字符或标记,以检测它是
()
还是具有值的节点。我想是的,但在此之前我需要断开正确的字符串吗?我尝试过拆分,但无法。为什么不尝试使用
查找()
查看。尝试例如
导入标记化,StringIO;标记化。标记化(StringIO.StringIO('(3()(2()))).readline)
@9000我尝试过,但我有一些问题,例如,如果我有这样的情况(11(,它们只保存1,而不是11,我的代码。。。
def OrganizarArvore(self, string, raiz_atual):
    if self.raiz is None:
        if string[1] != ')':
            self.raiz = No(int(string[1]))
        self.OrganizarArvore(string[2:-1], self.raiz)
    else:
        if raiz_atual.left is None:
            raiz_atual.left = No(int(string[1]))
            self.OrganizarArvore(string[2:-1], raiz_atual.left)
        else:
            self.OrganizarArvore(string[2:-1], raiz_atual.left)