Λαμβάνοντας υπόψη ένα τροποποιημένο δυαδικού δέντρου αναζήτησης, βρείτε k'th μικρότερο στοιχείο

ψήφοι
4

Ας υποθέσουμε ότι σε μια δεδομένη δυαδικό δέντρο και αν κάθε κόμβος περιέχει τον αριθμό των στοιχείων του παιδιού , τότε ποιος είναι ο βέλτιστος τρόπος για να βρείτε k'th μικρότερο στοιχείο στο δέντρο;

Παρακαλώ σημειώστε ότι αυτό δεν είναι τακτική BST. Κάθε κόμβος περιέχει τον αριθμό του στοιχείου παιδί κάτω από αυτό.

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


3 απαντήσεις

ψήφοι
4

find_element(root, k)

    if(root.left.nchildren + 1 == k - 1) 
        return root;

    if(root.left.nchildren + 1 >= k)
        return find_element(root.left, k)             

    else 
        return find_element(root.right, k - (root.left.children + 1))
Απαντήθηκε 06/09/2011 στις 14:04
πηγή χρήστη

ψήφοι
0

Αυτό είναι ό, τι πήρα:

find (root, k)
{
leftChildCount = root->left->n
rightChildCount = root->right->n

if (leftChildCount+1 == k)
  Print root node
else if (k< leftChildCount)
  Find(root->left,k)
else
  Find(root->right,k-leftChildCount)
}
Απαντήθηκε 06/09/2011 στις 14:05
πηγή χρήστη

ψήφοι
0

Traverse BST σε Inorder τραβέρσα τρόπο και να αποθηκεύουν στοιχεία για συστοιχία. Σειρά σας είναι ένα ταξινομημένο πίνακα.

Απαντήθηκε 22/05/2013 στις 20:15
πηγή χρήστη

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