Δυαδική Αναζήτηση Δέντρα

ψήφοι
5

Αυτό είναι ένα τμήμα κώδικα που βρέθηκαν στο wikipedia για BST:

# 'node' refers to the parent-node in this case
 def search_binary_tree(node, key):
     if node is None:
         return None  # key not found
     if key < node.key:
         return search_binary_tree(node.leftChild, key)
     elif key > node.key:
         return search_binary_tree(node.rightChild, key)
     else:  # key is equal to node key
         return node.value  # found key

Τώρα εδώ είναι ένα δυαδικό δέντρο:

       10
    5        12
  3   8    9   14
     4 11  

Αν είμαι ψάχνουν για 11, και ακολουθώ τον αλγόριθμο εκεί, αρχίζω με 10, πάω δεξιά έως 12, και στη συνέχεια αφήνεται να 9. Και φτάνω στο τέλος του δέντρου χωρίς να βρει 11. Αλλά 11 υπάρχει στο δέντρο μου , είναι ακριβώς στην άλλη πλευρά.

Μπορείτε σας παρακαλώ να εξηγήσετε ποιες είναι οι περιορισμοί σε ένα δυαδικό δέντρο για αυτόν τον αλγόριθμο για να εργαστούν στο δέντρο μου;

Ευχαριστώ.

Δημοσιεύθηκε 07/09/2010 στις 06:31
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
3

Μην συγχέετε μεταξύ Binary Tree και Binary Search Tree. Το δυαδικό δέντρο αναζήτησης (εν συντομία ονομάζεται ως BST) είναι ένας ειδικός τύπος του δυαδικού δέντρου, όπου όλοι οι κόμβοι στο αριστερό είναι μικρότερο ή ίσο με το γονικό κόμβο και όλοι οι κόμβοι δεξιά είναι μεγαλύτερη από το μητρικό κόμβο.

Ότι το παράδειγμα που έχω δώσει είναι μόνο ένα δυαδικό δέντρο και όχι Binary Search Tree. Μπορείτε να δείτε ότι η τιμή 11 και 14 έχουν μείνει στη μητρική κόμβο 10, που παραβιάζει την ιδιότητα BST. Ρίξτε μια ματιά εδώ για δυαδικά δέντρα αναζήτησης.

Απαντήθηκε 07/09/2010 στις 06:34
πηγή χρήστη

ψήφοι
1

Έχετε τοποθετούνται οι κόμβοι 14 και 11 σε λάθος μέρος. Από το άρθρο της Wikipedia για BSTs :

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

Όπως μπορείτε να δείτε, τόσο 14 και 11 είναι μεγαλύτερη από 8.

Απαντήθηκε 07/09/2010 στις 06:35
πηγή χρήστη

ψήφοι
3

Το δέντρο που παρουσιάζονται δεν είναι ένα BST. 11 και 14 θα έχουν ποτέ εισαχθεί στα αριστερά του 10, και γι 'αυτό ο αλγόριθμος δεν κάνετε εκεί. 9 είναι εκτός τόπου.

Η εισαγωγή σύμφωνα με την Wikipedia:

Η εισαγωγή ξεκινά η αναζήτηση θα ξεκινήσει? αν η ρίζα δεν είναι ίση με την τιμή, ψάχνουμε τα αριστερά ή προς τα δεξιά υποδένδρων όπως και πριν. Τελικά, θα φτάσουμε ένα εξωτερικό κόμβο και προσθέστε την τιμή ως δεξιά ή αριστερά το παιδί του, ανάλογα με την αξία του κόμβου. Με άλλα λόγια, εξετάζουμε τη ρίζα και αναδρομικά εισάγετε το νέο κόμβο στο αριστερό υποδένδρο αν η νέα τιμή είναι μικρότερη από τη ρίζα, ή το δικαίωμα υποδέντρο αν η νέα τιμή είναι μεγαλύτερη ή ίση με τη ρίζα.

Μπορείτε να πείτε ότι ένα δυαδικό δέντρο είναι ένα BST αν έχει αυτές τις ιδιότητες (επίσης από το Wikipedia):

  1. Το αριστερό υποδένδρο του κόμβου περιέχει μόνο κόμβους με τα πλήκτρα κάτω από το κλειδί του κόμβου.
  2. Το δικαίωμα υποδέντρο ενός κόμβου περιέχει μόνο κόμβους με τα πλήκτρα μεγαλύτερο από το κλειδί του κόμβου.
  3. Τόσο η αριστερά και δεξιά υποδένδρων πρέπει επίσης να είναι δυαδικά δέντρα αναζήτησης.
Απαντήθηκε 07/09/2010 στις 06:35
πηγή χρήστη

ψήφοι
10

Είναι μόνο και μόνο επειδή το δέντρο σας δεν είναι ένα δυαδικό δέντρο αναζήτησης: δεν έχει διαταχθεί σωστά. Η BST είναι χτισμένο όπως περιγράφεται στον αλγόριθμο πραγματικότητα. Για παράδειγμα, το δέντρο σας: τον κόμβο «9» δεν είναι στη σωστή θέση, επειδή ως 9 <10 θα πρέπει να είναι κάτω από το αριστερό κλάδο του κόμβου ρίζας «10». Το ίδιο για το «14» και «11», η οποία θα πρέπει να είναι στο σωστό κλάδο.

για παράδειγμα ένα BST θα μπορούσε να sth όπως αυτό:

    10
  5    11
3   8    12
          14
Απαντήθηκε 07/09/2010 στις 06:37
πηγή χρήστη

ψήφοι
1

δέντρο σας δεν είναι ένα δυαδικό δένδρο αναζήτησης

Απαντήθηκε 07/09/2010 στις 06:58
πηγή χρήστη

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