Наилучшая временная сложность, чтобы проверить, является ли двоичное дерево avl-деревом (сбалансировано по высоте)
Поэтому меня спросили в интервью, возможно ли, чтобы проверка, является ли дерево avl-деревом, могла бы быть: T(n) = O(log(n))
и не знал ответа, после поиска в Google, лучшие алгоритмы, которые я видел, были O (n) (" https://www.geeksforgeeks.org/how-to-determine-if-a-binary-tree-is-balanced/")
это сделать алгоритм с O(log(n))?
1 ответ
Ответ зависит немного. Если коэффициенты баланса явно хранятся в узлах, проверка баланса может быть выполнена в O(1)
время путем чтения значения из корневого узла; поэтому предположим, что коэффициенты баланса не хранятся в явном виде.
Обратите внимание, что в O(log n)
время невозможно прочитать весь ввод.