Gitt en modifisert binært søketre, finne k'te minste elementet

stemmer
4

Anta i en gitt binært tre hvis hver node inneholder antall underordnede elementer , så hva er den optimale måten å finne k'te minste elementet i treet?

Vær oppmerksom på at dette ikke er vanlig BST. Hver node som inneholder flere underordnede elementet under den.

Publisert på 06/09/2011 klokken 12:56
kilden bruker
På andre språk...                            


3 svar

stemmer
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))
Svarte 06/09/2011 kl. 13:04
kilden bruker

stemmer
0

Dette er hva jeg fikk:

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)
}
Svarte 06/09/2011 kl. 13:05
kilden bruker

stemmer
0

Travers BST i Inorder travers måte og lagrer elementer i matrisen. Array er en sortert array.

Svarte 22/05/2013 kl. 19:15
kilden bruker

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