我需要你的幫助來組織我二叉搜索樹,這個問題說來安裝和組織樹是這樣的:組織二叉樹的項目
(11()())
(11(2()())())
(11(2()())(13()()))
所以,當我添加一個新的節點樹,我需要打印此,
(new node(left)(right))
我嘗試這樣做,但我的代碼只打印了根,而不是節點,就像這樣:
(11()())
(11(11()( ))())
(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))
謝謝你,這解決了我的問題:) – DouglasNickson