Nyomtatás szintje bináris keresési fa

szavazat
1

Van egy bináris keresési fa adatszerkezet osztály, hogy tartja a csomópontokat, amelyek tárgyakat az oldalán az osztálynak, hogy úgy viselkedik, mint egy bináris keresési fa.

Az osztály túl hosszú ahhoz, hogy tegye ide, de alapvetően ez hogyan működik. Ha szeretné kinyomtatni a felső értéke a BST, azt mondanám,

print (self._root)

Ha akartam mozgatni a bal oldali fa (ugyanaz, hogy menjen a jobb, csak rendbe helyett balra), azt mondanám,

print (self._root._left)

Remélem, hogy ez is elég, így segíteni tud a probléma

Tehát rá a probléma, ha van egy BST, mint például:

      6
     / \
    3   8
   / \   \
  1  4   10

Azt akarom, hogy képes kinyomtatni:

6

3
8

1
4
10

Írtam egy rekurzív lengőkarokkal funkció:

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

Hogy valaha ez a program kinyomtatja az értékeket egy tömbben:

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

Hogyan jutok el nyomtatni, ahogyan szeretném fent?

A kérdést 19/03/2014 14:51
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Optimális esetben fogsz akar válaszolni erre a rekurzív. Ez a fajta bejárás különösen az úgynevezett széltében. Itt van néhány jegyzetek bejárását bináris keresési fák, amelyek hasznosak lehetnek az Ön számára, bár a java.

Itt is nagyon hasonló (esetleg duplikált) a kérdést, bár, szemben a megoldására rekurzív megoldást kap a hurok.

Válaszolt 19/03/2014 15:08
a forrás felhasználó

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