По заданному модифицированному бинарному дереву поиска найдите самый маленький элемент - PullRequest
4 голосов
/ 06 сентября 2011

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

Ответы [ 3 ]

4 голосов
/ 06 сентября 2011
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))
0 голосов
/ 22 мая 2013

Обход BST в InOrder Обход и сохранение элементов в массиве.Ваш массив является отсортированным массивом.

0 голосов
/ 06 сентября 2011

Вот что я получил:

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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...