2016-08-31 3 views
1

Что будет худшей временной сложностью для построения двоичного дерева поиска с заданными произвольными элементами N?Строит BST с N заданными элементами O (n lg n)?

Я думаю, что есть разница между N заданных элементов и элементов, поступающих один за другим и, тем самым делая BST от общего числа N элементов.

В первом случае, это О (п § п) и во втором является O (N^2). Я прав ?

+0

Что нового в том, чтобы принимать элементы по одному, а затем разобраться со всем этим сразу? – dasblinkenlight

+0

Я думаю, что более поздний случай может построить Skewed BST, тем самым имея O (n^2) – Garrick

+1

Принимая числа один за другим, O (n) во времени и O (n) в пространстве. Теперь вы можете отсортировать их и построить идеальное дерево в O (n * log n). Если вы должны построить дерево по ходу (т. Е. Нет дополнительного пространства O (n) для ввода доступно), то вы можете получить несимметричное дерево для O (n^2) наихудшего случая. – dasblinkenlight

ответ

3

Если Binary Search Tree (BST) не совсем сбалансирован, то наибольшая временная сложность - O(n^2). Как правило, BST создается путем повторной установки, поэтому в худшем случае будет O(n^2). Но если вы можете сортировать вход (в O(nlogn)), он может быть встроен в O(n), в результате чего в общей сложности O(nlogn)

It BST является self-balancing, то в худшем случае время сложность O(nlog n) даже если мы повторили вставку.

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