@lightseeker

Как искать значение в сбалансированном бинарном дереве?

Есть массив [1,2,3,3,4].
Чтобы создать из этого сбалансированное дерево я беру элементы с индексом floor(arr.length / 2). И того получается следующее

646286177348c328262368.png

Теперь надо искать элементы через совпадение ( нужно найти все соответствующие ).
Как это сделать в данном конкретном случае? Или может я неправильно создал дерево?
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 4
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как искать значение в сбалансированном бинарном дереве?

Так же, как и в несбалансированном. Сбалансированность на стратегию поиска никак не влияет. Влияет логика построения дерева.

Чтобы создать из этого сбалансированное дерево я беру элементы с индексом floor(arr.length / 2)

С такой логикой элементы равные данному могут попасть как в левое поддерево, так и в правое. Чтобы найти их все нужно будет сканировать оба поддерева, если корень равен искомому числу.

Ну да я нашел первый на самом верху дерева, ну а потом? Левый узел меньше тройки а правая больше, но под правым узлом есть еще тройка. По какой логике надо искать ?

Если текущий корень больше искомого -- идти в левое поддерево, Если меньше -- идти в правое. Если равен -- то найдено, после чего идти в оба поддерева.
Ответ написан
GavriKos
@GavriKos
Бинарным поиском.
Ответ написан
Alexandroppolus
@Alexandroppolus
кодир
Насколько я понял, дерево строится по отсортированному массиву однократно и потом не меняется. Если это так, то тебе вообще не надо его строить, а бинарный поиск делать по массиву
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Есть массив [1,2,3,3,4].
Нет. Нет. Все не так. Бинарное дерево строится на основе любых произвольных массивов.
Не обязательно сортированных. То что ты привел это какой-то частный случай чтоб облегчить себе
жизнь. И непонятно зачем мы здесь будем обсуждать частный случай.

Вот попробуй построить дерево из
[5,1,3,2,4].
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы