Skrive nivåer av binært søketre

stemmer
1

Jeg har et binært søketre datastruktur klasse som inneholder noder som er objekter i side klassen som fungerer som et binært søketre.

Klassen er for lang til å poste her, men i utgangspunktet dette er hvordan det fungerer. Hvis jeg ønsker å skrive ut den øverste verdien av bst, vil jeg si

print (self._root)

Hvis jeg ønsket å flytte til venstre side av treet (samme med å gå til høyre, bare sette høyre i stedet for venstre), vil jeg si

print (self._root._left)

Jeg håper dette er nok slik at du kan hjelpe meg med mitt problem

Så til mitt problem, hvis jeg har en BST som:

      6
     / \
    3   8
   / \   \
  1  4   10

Jeg ønsker å være i stand til å skrive ut:

6

3
8

1
4
10

Jeg har skrevet en rekursiv traversering funksjon:

def traverse(self):

        a = []
        self._traverse_aux(self._root, a)   
        return a

def _traverse_aux(self, node, a):

        if node is not None:
            self._traverse_aux(node._left, a)
            a.append(node._value)
            self._traverse_aux(node._right, a)
        return

Hvordan noensinne, skriver denne verdien i en enkelt tabell:

[1, 3, 4, 6, 8, 10]

Hvordan kan jeg få det til å skrive ut slik jeg vil ovenfor?

Publisert på 19/03/2014 klokken 13:51
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Optimalt, du kommer til å ønske å svare på dette rekursivt. Denne typen traversering i spesielle kalles bredde-først. Her er noen notater på traversering av binære søketrær som kan være nyttig for deg, selv om de er i java.

Her er også en svært lik (muligens duplikat) spørsmål, men i motsetning til å løse det rekursivt en løsning er gitt ved hjelp av løkker.

Svarte 19/03/2014 kl. 14:08
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more