Druckstufen binärer Suchbaum

stimmen
1

Ich habe eine binäre Suchbaumdatenstruktur-Klasse, die Knoten enthält, welche Objekte in der Seite der Klasse sind, die wie ein binärer Suchbaum wirkt.

Die Klasse ist zu lang, um hier zu posten, aber im Grunde das ist, wie es funktioniert. Wenn ich den oberen Wert des bst ausdrucken möchten, würde ich sagen,

print (self._root)

Wenn ich auf der linken Seite des Baumes (mit gleichen gehen nach rechts, nur setzen rechts statt links) bewegen, wollte ich würde sagen,

print (self._root._left)

Ich hoffe, das ist genug, so dass Sie mir bei meinem Problem helfen können

Also auf mein Problem, wenn ich eine bst wie:

      6
     / \
    3   8
   / \   \
  1  4   10

Ich möchte ausdrucken können:

6

3
8

1
4
10

Ich habe eine rekursive Querungsfunktion geschrieben:

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

Wie auch immer, druckt diese die Werte in einem einzigen Array:

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

Wie kann ich es so, wie ich oben drucken möchten?

Veröffentlicht am 19/03/2014 um 14:51
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Optimal, Sie gehen , dies wollen rekursiv beantworten. Diese Art von Traversal insbesondere wird Breite-First genannt. Hier sind einige Hinweise auf Traversal von binären Suchbäume, die Ihnen nützlich sein könnten, obwohl sie in Java sind.

Hier ist auch eine sehr ähnlich (möglicherweise Duplikat) Frage, obwohl im Gegensatz zu rekursiv eine Lösung der Lösung wird unter Verwendung von Schleifen gegeben.

Beantwortet am 19/03/2014 um 15:08
quelle vom benutzer

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