Vzhledem k tomu, modifikovaný binární vyhledávací strom, najít k'th nejmenší prvek

hlasů
4

Předpokládejme, že v daném binárního stromu , pokud má každý uzel obsahuje počet podřízených elementů , pak to, co je optimální způsob, jak najít k'th nejmenší prvek ve stromu?

Upozorňujeme, že toto není pravidelný BST. Každý uzel je obsahuje řadu podřízený prvek pod ním.

Položena 06/09/2011 v 13:56
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
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))
Odpovězeno 06/09/2011 v 14:04
zdroj uživatelem

hlasů
0

To je to, co jsem dostal:

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)
}
Odpovězeno 06/09/2011 v 14:05
zdroj uživatelem

hlasů
0

Traverse BST v nezbytného traverz způsobem a ukládání prvků do pole. Vaše pole je setříděné pole.

Odpovězeno 22/05/2013 v 20:15
zdroj uživatelem

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