Binary Search Tree

ψήφοι
0

καθηγητής μου δημοσιεύτηκε μερικές ερωτήσεις ανασκόπησης για την τελική εξέταση. Και δεν μπορώ να βρώ τις απαντήσεις για αυτό. Οποιαδήποτε βοήθεια θα εκτιμηθεί ιδιαίτερα!

Σκεφτείτε ένα δυαδικό δέντρο n κόμβους:
α. Ποιο είναι το ελάχιστο και το μέγιστο αριθμό των κόμβων φύλλων;
σι. Ποια είναι η ελάχιστη και η μέγιστη τιμή του ύψους;
ντο. Πόσες δείκτες που χρησιμοποιούνται από το δέντρο (χωρίς να υπολογίζονται τα μηδενικά δείκτες, και υπό την προϋπόθεση να μην κρατήσει ένα πεδίο που αποθηκεύει τη μητρική);

*ρε. Ποια είναι η χειρότερη στιγμή λειτουργίας φροντίδα για την εισαγωγή n κόμβους σε ένα (αρχικά κενό) δυαδικό δένδρο αναζήτησης;

Δημοσιεύθηκε 24/05/2011 στις 18:27
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
0

Δοκιμάστε την κατάρτιση διάφορα δέντρα σε ένα χαρτί και να δείτε τι παίρνετε. Να θυμάστε ότι ένα δυαδικό δένδρο ορίζεται ως ένα δέντρο όπου κάθε κόμβος μπορεί να έχει 0 (στην οποία περίπτωση είναι ένα φύλλο), 1 ή 2 παιδιά. Για την ερώτησή σας θα πρέπει να εξετάσει την πολύ ισορροπημένη περίπτωση 1 παιδί ανά κόμβο.

Απαντήθηκε 24/05/2011 στις 18:31
πηγή χρήστη

ψήφοι
0

Σκεφτείτε:

Αν προσπαθείτε να μεγιστοποιηθεί ο αριθμός των φύλλων, που θέλετε τόσο λίγα εσωτερικούς κόμβους όσο το δυνατόν (και το αντίστροφο, αν προσπαθείτε να ελαχιστοποιηθεί ο αριθμός των φύλλων). Πώς μπορείτε να το επιτύχει αυτό;

Για να πάρετε ένα δέντρο της μέγιστης ύψος, θα θέσει όσο το δυνατόν λιγότερα κόμβοι σε κάθε επίπεδο όσο το δυνατόν. Πώς μπορείς να το κάνεις αυτό? Αντίθετα, για το ελάχιστο ύψος, ποιος είναι ο μέγιστος αριθμός των κόμβων που μπορείτε να βάλετε σε κάθε επίπεδο;

Πόσοι τρόποι υπάρχουν για να πάρει σε κάθε κόμβο του δέντρου; Έτσι, πόσοι δείκτες χρειάζεστε;

Απαντήθηκε 24/05/2011 στις 18:33
πηγή χρήστη

ψήφοι
0

Υποθέτω είστε είτε κωδικοποίηση σε C ή C ++.

ένα. Ένας κόμβος, εάν η δομή ορίζεται ως εξής: struct node {κόμβο struct * αριστερά, δεξιά *? }? Μπορείτε να παρατηρήσετε ότι η δομή μπορεί να έχουν είτε 0, 1, ή 2 φύλλα. Έτσι, η μέγιστη είναι 2, min είναι 0 φύλλα.

ύψος b.Minimal είναι μηδέν, στην οποία θα περιέχει μόνο τον κόμβο ρίζας. Σημειώστε ότι ο κόμβος ρίζα δεν μετρά ως ένα ύψος 1. Είναι, επίσης, ονομάζεται βάθος κατά καιρούς. Εδώ είναι ένας αλγόριθμος για το ύψος:

    int height(struct node *tree) 
    { 
    if (tree == NULL) return 0;
    return 1 + max (height (tree->left), height (tree->right)); 
    }

Διαβάστε περισσότερα: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL

ντο. Συγγνώμη αν πάρω αυτό το worng τρόπο, αλλά υποθέτω αν χαρτογραφηθεί αυτό έξω σε ένα κομμάτι χαρτί, θα ήθελα να προσπαθούμε να βρούμε τον αριθμό των «δεσμών» που θα χρησιμοποιήσετε; Σε αυτή την περίπτωση, θα ήθελα απλώς να είναι ο αριθμός των κόμβων στο δέντρο -1 για τον κόμβο ρίζα. Αυτός ο αλγόριθμος που βρέθηκαν σε αυτή τη σελίδα http://forums.techarena.in/software-development/1147688.htm μπορεί να σας βοηθήσει: ελέγξτε αν ρίζα είναι μηδενική, τότε περνούν τα αριστερά και δεξιά κόμβους ως παράμετροι στην λειτουργία.

int countnodes(Node* root)
{
    if (root == null || k<=0)
    {
      return 0;
    } else {
        return 1 + count(root.left,k-1) + count(root.right,k-1);
    }
}
// remember to subtract one at the end.
int totalnodes = countnodes(root) - 1;

ρε. Η χρονική πολυπλοκότητα για καλύτερη περίπτωση είναι O (nlogn) όπου n είναι ο αριθμός των κόμβων για την εισαγωγή. Η χειρότερη περίπτωση, είναι O (n). Είναι άμεσα γραμμική.

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

Ελπίζω αυτό να βοηθήσει. Καλή τύχη στην εξέτασή σου! Το ορυχείο είχε πριν από λίγους μήνες. ?)

Απαντήθηκε 24/05/2011 στις 18:39
πηγή χρήστη

ψήφοι
1

  • Ο μέγιστος αριθμός των φύλλων είναι ceil (n / 2). Ο ελάχιστος αριθμός είναι 1
  • Το μέγιστο ύψος είναι n. Το ελάχιστο είναι δαπέδου (log_2 (n))
Απαντήθηκε 24/05/2011 στις 18:44
πηγή χρήστη

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