Задать вопрос
@lightseeker

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

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

646286177348c328262368.png

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

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

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

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

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

Если текущий корень больше искомого -- идти в левое поддерево, Если меньше -- идти в правое. Если равен -- то найдено, после чего идти в оба поддерева.
Ответ написан