我需要你的帮助来组织我的二叉搜索树,问题是如何像这样装载和组织树:
(十一)
(十一)
(11(2())(13())
所以,当我向树中添加一个新节点时,我需要打印这个
(new node(left)(right))
我尝试这样做,但我的代码只打印根,而不打印节点,如下所示:
(十一)
(十一)
(11(11())(11())
我希望你能帮助我。你知道吗
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)
else:
self.Inserir(dado, raiz_atual.left)
else:
if raiz_atual.right is None:
raiz_atual.right = No(dado)
else:
self.Inserir(dado, raiz_atual.right)
def printArvore(self, raiz):
if raiz is None:
return
if raiz.left:
no_esquerda = self.printArvore(raiz.left)
else:
no_esquerda = {}
if raiz.right:
no_direita = self.printArvore(raiz.right)
else:
no_direita = {}
return '( {} {} {})'.format(self.raiz.dado, no_esquerda, no_direita)o
a = ArvoreBinariaBusca()
a.Inserir(11, a.raiz)
a.Inserir(2, a.raiz)
a.Inserir(13, a.raiz)
a.Inserir(4, a.raiz)
a.Inserir(15, a.raiz)
print(a.printArvore(a.raiz))
我提供的解决方案在通用的方式,您可以修改代码和名称的类,方法和变量根据您的方便。你知道吗
输出:
希望这能帮到你。你知道吗
查看printArvore()函数的最后一行:
您总是返回self的根,这意味着整个二进制搜索树的根。你知道吗
要解决这个问题,只需去掉“自我”:
相关问题 更多 >
编程相关推荐