Есть ли способ построить сбалансированное двоичное дерево поиска?Создание сбалансированного дерева двоичного поиска
Пример:
1 2 3 4 5 6 7 8 9
5
/\
3 etc
/\
2 4
/
1
Я думаю, есть способ сделать это без использования более сложных самобалансирующехся дерев. В противном случае я могу сделать это самостоятельно, но кто-то, возможно, уже это сделал :)
Спасибо за ответы! Это окончательный код Python:
def _buildTree(self, keys):
if not keys:
return None
middle = len(keys) // 2
return Node(
key=keys[middle],
left=self._buildTree(keys[:middle]),
right=self._buildTree(keys[middle + 1:])
)
Медиана - не совсем правильная терминология. Во-первых, медиана может не существовать в исходных данных. Например, медиана 3 и 4 равна 3,5. См. Http://en.wikipedia.org/wiki/Median –
Вы правы. По-видимому (это со ссылкой на страницу Википедии) это слово. Я сделал редактирование. – 2010-05-24 22:02:05