用括号处理输入

时间:2017-04-06 18:26:17

标签: python

我需要帮助来操作我的代码的输入,输入传递一系列带有值的括号,以插入到二进制搜索树中,安装树的代码已准备好,问题只是处理输入。

输入如下:

(12(图7(3()())(10()(11()())))(23(17()())(31()())))

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

class No():
    def __init__(self, dado):
        self.dado = dado
        self.left = None
        self.right = None

class ArvoreBinariaBusca():
    def __init__(self):
        self.raiz = None

    def Inserir(self, dado, raiz_atual):
        if self.raiz is None:
            self.raiz = No(dado)
            return

        if dado < raiz_atual.dado:
            if raiz_atual.left is None:
                raiz_atual.left = No(dado)
                return
            else:
                self.Inserir(dado, raiz_atual.left)

        else:
            if raiz_atual.right is None:
                raiz_atual.right = No(dado)
                return
            else:
                self.Inserir(dado, raiz_atual.right)
        return

我尝试做这样的事情:

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)

但没效果。

0 个答案:

没有答案