2014-12-09 3 views
0

Как бы найти самый маленький ключ в двоичном дереве? Если это было двоичное дерево поиска, наименьшее значение было бы в крайнем левом углу, а самое большое - в крайнем правом (если я не понял), но двоичное дерево не имеет такого упорядочения.Найти наименьший ключ в двоичном дереве в Java

Я, похоже, не думаю, что это хороший способ решить эту проблему. Было бы здорово, если бы кто-нибудь мог помочь :)

ответ

1

Эта проблема, вероятно, проще всего решить рекурсивно.

  • Вы найдете самый маленький ключ левого поддерева.
  • Вы найдете самый маленький ключ в правом поддереве.
  • вы сравниваете прежние два элемента друг с другом и с элементом текущего узла и возвращаете самый маленький из трех элементов.

Вот некоторые псевдо-код:

KeyType getSmallestKey (Node root) 
{ 
    minLeft = MAX_VALUE 
    minRight = MAX_VALUE 
    if root.hasLeftChild 
     minLeft = getSmallestKey(root.left) 
    if root.hasRightChild 
     minRight = getSmallestKey(root.right) 
    return min (minLeft, minRight, root.getKey) 
} 
+0

Спасибо! Не могли бы вы также записать его в псевдокоде? Я понимаю, но реализация хуже ... Я много борюсь с использованием рекурсии. – user16655

+0

@ пользователь16655 Конечно, проблем нет. Добавлен псевдокод. – Eran

Смежные вопросы