Bij een gewijzigde binaire zoekboom, vind k-kleinste element

stemmen
4

Stel dat in een bepaalde binaire boom als elk knooppunt bevat aantal onderliggende elementen , wat is dan de optimale manier om k-kleinste element in de boom te vinden?

Let op: dit is geen gewone BST. Elk knooppunt is dat aantal subelement eronder.

De vraag is gesteld op 06/09/2011 om 13:56
bron van user
In andere talen...                            


3 antwoorden

stemmen
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))
antwoordde op 06/09/2011 om 14:04
bron van user

stemmen
0

Dit is wat ik kreeg:

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)
}
antwoordde op 06/09/2011 om 14:05
bron van user

stemmen
0

Traverse BST ommet traverse wijze en opslaan elementen array. Array is een gesorteerde array.

antwoordde op 22/05/2013 om 20:15
bron van user

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