Data una modifica ricerca binaria albero, trovare k'th elemento più piccolo

voti
4

Supponiamo che in un determinato albero binario se ogni nodo contiene il numero di elementi figlio , allora qual è il modo ottimale per trovare k'th più piccolo elemento nella struttura?

Si prega di notare che questo non è BST regolare. Ogni nodo è contenente numero di elemento secondario sotto di essa.

È pubblicato 06/09/2011 alle 13:56
fonte dall'utente
In altre lingue...                            


3 risposte

voti
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))
Risposto il 06/09/2011 a 14:04
fonte dall'utente

voti
0

Questo è quello che ho ottenuto:

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)
}
Risposto il 06/09/2011 a 14:05
fonte dall'utente

voti
0

Traverse BST in ordine simmetrico traversa manner e memorizzare elementi di matrice. Il vostro array è un array ordinato.

Risposto il 22/05/2013 a 20:15
fonte dall'utente

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