Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α22.2 · Έλεγχος ύπαρξης σε δυαδικό δέντρο αναζήτησης

Διαλέξεις 21–22: Δέντρα, διαφάνειες 35–37 (διάλεξη 21: διαφάνειες 57–59) · Δυσκολία ★☆☆ · programming · Κεφάλαια: 22, 21

Ένα Δυαδικό Δέντρο Αναζήτησης (Binary Search Tree - BST ή Ordered Tree) είναι ένα ταξινομημένο δέντρο έτσι ώστε για κάθε κόμβο, όλοι οι κόμβοι στο αριστερό του υποδέντρο να είναι μικρότεροι σε τιμή και όλοι οι κόμβοι στο δεξί του υποδέντρο να είναι μεγαλύτεροι.

Έλεγχος αν υπάρχει (exists) ένα στοιχείο σε δυαδικό δέντρο. Πως;

Γράψτε τη συνάρτηση

int exists(Tree t, int value);

που επιστρέφει 1 αν η τιμή value υπάρχει στο BST t και 0 αλλιώς, με χρόνο \(O(\log n)\) για ισορροπημένο δέντρο.

Υπόδειξη

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

Αριθμός στον οδηγό: Α22.2 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec22-bst-exists · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec22-bst-exists.html · Markdown (GitHub)