Δυαδικό δέντρο για να Binary Search Tree (BST)

ψήφοι
1

Πώς μπορείτε να μετατρέψετε Binary Tree σε δυαδική αναζήτηση Δέντρο με O (1) επιπλέον χώρο;

Δημοσιεύθηκε 17/05/2010 στις 10:56
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
6

Μετατρέποντας μια μη διατεταγμένη δυαδικό δέντρο σε ένα τακτοποιημένο δυαδικό δέντρο αναζήτησης είναι ασήμαντο, αλλά είναι λίγο πιο δύσκολο να το κάνουμε γρήγορα.

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

  1. Πιάσε ένα τυχαίο κόμβο φύλλο από το υπάρχον δέντρο σας
  2. Αποσύνδεση τον κόμβο φύλλο από το υπάρχον δέντρο σας
  3. Κάντε τον κόμβο της ρίζας των νέων δυαδικό δέντρο αναζήτησης σας
  4. Πιάσε ένα άλλο τυχαίο κόμβο φύλλο από το υπάρχον δέντρο σας
  5. Αποσύνδεση αυτόν τον κόμβο από την υπάρχουσα δέντρο σας
  6. Βρείτε το σωστό σημείο για, και να συνδέσει τον κόμβο, σε νέο δυαδικό δέντρο αναζήτησης σας
  7. Επαναλάβετε το βήμα 4-6 μέχρι το αρχικό δέντρο είναι άδειο

Θα πρέπει να απαιτεί μόνο λίγα μεταβλητές, όπως το μητρικό του κόμβο φύλλο είστε αποσύνδεση (εκτός των κόμβων έχει γονέα-συνδέσεις), η ρίζα τον κόμβο του νέου δέντρου, και μερικές προσωρινές μεταβλητές, όλα μέσα Ξ σας (1 ) κριτήρια χώρο.

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

Απαντήθηκε 17/05/2010 στις 11:24
πηγή χρήστη

ψήφοι
-1

Μετατροπή δυαδικού δένδρου σε διπλά συνδεδεμένη ΛΙΣΤΑ- μπορεί να γίνει επι τόπου σε O (n) Στη συνέχεια, το είδος χρησιμοποιώντας ταξινόμηση με συγχώνευση, nlogn Μετατρέψτε τον κατάλογο πίσω σε ένα δέντρο - O (n)

Απλή nlogn λύση.

Απαντήθηκε 18/02/2014 στις 20:52
πηγή χρήστη

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