Учитывая модифицированное бинарное дерево поиска, найти наименьший элемент k-го

голоса
4

Предположим , что в данном бинарном дереве , если каждый узел содержит число дочерних элементов , то , что является оптимальным способом найти k - й наименьший элемент в дереве?

Пожалуйста, обратите внимание, что это не регулярно BST. Каждый узел, содержащее количество дочернего элемента под ним.

Задан 06/09/2011 в 13:56
источник пользователем
На других языках...                            


3 ответов

голоса
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))
Ответил 06/09/2011 в 14:04
источник пользователем

голоса
0

Это то, что я получил:

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)
}
Ответил 06/09/2011 в 14:05
источник пользователем

голоса
0

Траверса BST в заказовМои траверс способом и хранить элементы в массиве. Ваш массив отсортированный массив.

Ответил 22/05/2013 в 20:15
источник пользователем

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