Dado un árbol binario de búsqueda modificada, encontrar k-ésimo elemento más pequeño

votos
4

Supongamos que en un árbol binario determinado si cada nodo contiene varios elementos secundarios , entonces ¿cuál es la mejor manera de encontrar k-ésimo elemento más pequeño en el árbol?

Tenga en cuenta que esto no es BST regular. Cada nodo está conteniendo número de elemento hijo debajo de ella.

Publicado el 06/09/2011 a las 13:56
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
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))
Respondida el 06/09/2011 a las 14:04
fuente por usuario

votos
0

Esto es lo que conseguí:

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)
}
Respondida el 06/09/2011 a las 14:05
fuente por usuario

votos
0

Traverse BST en finde elementos Manner transversal y tienda para array. Su matriz es una matriz ordenada.

Respondida el 22/05/2013 a las 20:15
fuente por usuario

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