επίπεδα Εκτύπωση Binary Search Tree

ψήφοι
1

Έχω ένα δυαδικό δέντρο αναζήτησης τάξης δομή δεδομένων που κρατά τους κόμβους που είναι αντικείμενα στην πλευρά της τάξης που λειτουργεί σαν ένα δυαδικό δέντρο αναζήτησης.

Η κατηγορία είναι πολύ μεγάλη για να υποβάλετε εδώ, αλλά βασικά αυτό είναι το πώς λειτουργεί. Αν θέλω να εκτυπώσετε την ανώτατη τιμή του BST, θα έλεγα

print (self._root)

Αν ήθελα να κινηθεί προς την αριστερή πλευρά του δέντρου (το ίδιο με το να πάει προς τα δεξιά, απλά βάλτε το δικαίωμα αντί αριστερά), θα ήθελα να πω

print (self._root._left)

Ελπίζω ότι αυτό είναι αρκετά ώστε να μπορεί να με βοηθήσει με το πρόβλημά μου

Έτσι, στο πρόβλημά μου, αν έχω μια BST όπως:

      6
     / \
    3   8
   / \   \
  1  4   10

Θέλω να είμαι σε θέση να εκτυπώσετε:

6

3
8

1
4
10

Έχω γράψει μια αναδρομική συνάρτηση τραβέρσα:

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

Πως ποτέ, αυτό τυπώνει τις τιμές σε ένα ενιαίο πίνακα:

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

Πώς μπορώ να πάρω για να εκτυπώσετε τον τρόπο που θέλω παραπάνω;

Δημοσιεύθηκε 19/03/2014 στις 14:51
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Ιδανικά, θα πάμε να θέλουν να απαντήσουμε σε αυτό αναδρομικά. Αυτό το είδος της διάσχισης συγκεκριμένα ονομάζεται Πλάτος-First. Εδώ είναι μερικές σημειώσεις για διάσχιση δυαδικών δέντρων αναζήτησης που μπορεί να είναι χρήσιμο να σας, αν και είναι σε Java.

Εδώ είναι επίσης μια πολύ παρόμοια (ενδεχομένως εις διπλούν) ερώτημα, αν και, σε αντίθεση με την επίλυσή του αναδρομικά μια λύση δίνεται με τη χρήση βρόχων.

Απαντήθηκε 19/03/2014 στις 15:08
πηγή χρήστη

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