Biorąc zmodyfikowana binarne drzewo poszukiwań, znaleźliśmy k'th najmniejszy element

głosy
4

Załóżmy, że w danym drzewie binarnym jeśli każdy węzeł zawiera liczbę elementów podrzędnych , to co jest optymalnym sposobem na znalezienie k'th najmniejszy element w drzewie?

Należy pamiętać, to nie jest regularny BST. Każdy węzeł zawierający numer elementu podrzędnego pod nią.

Utwórz 06/09/2011 o 13:56
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
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))
Odpowiedział 06/09/2011 o 14:04
źródło użytkownik

głosy
0

To jest to, co mam:

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)
}
Odpowiedział 06/09/2011 o 14:05
źródło użytkownik

głosy
0

Przesuwu BST w Inorder przesuwu Sposób i przechowywania elementów do tablicy. Twoja tablica jest posortowana tablica.

Odpowiedział 22/05/2013 o 20:15
źródło użytkownik

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