我需要帮助来操作我的代码的输入,输入传递一系列带有值的括号,以插入到二进制搜索树中,安装树的代码已准备好,问题只是处理输入。
输入如下:
(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)
但没效果。