Я решаю следующую проблему на веб-сайте: «Напишите функцию, чтобы увидеть, является ли бинарное дерево« супербалансированным »(новое свойство дерева, которое мы только что создали). Дерево« супербалансированное » если разница между глубинами любых двух листовых узлов не больше единицы ».Двоичная глубина дерева у листьев
Способ, которым веб-сайт проверяет разницу в глубинах между двумя узлами, - это выполнить поиск по глубине и затем добавить глубину каждого посещенного узла в список, называемый глубинами, если глубина еще не указана в списке:
if depth not in depths:
depths.append(depth)
# two ways we might now have an unbalanced tree:
# 1) more than 2 different leaf depths
# 2) 2 leaf depths that are more than 1 apart
if (len(depths) > 2) or \
(len(depths) == 2 and abs(depths[0] - depths[1]) > 1):
return False
Что я не понимаю, почему мы должны проверять оба пути? Не было бы достаточно, чтобы просто проверить, есть ли более двух разных глубин листьев или две разные глубины листьев, более одного? Почему полезно иметь обе проверки?
код/Вопрос цитаты из источника: InterviewCake.com
Хороший вопрос; но, поскольку он больше об алгоритме (а не о проблеме с кодом), он лучше подходит для [programers.stackexchange.com] (http://programmers.stackexchange.com) –
@BurhanKhalid, с тех пор, когда SO не является подходящим местом спросить об алгоритмах ?? на странице справки четко указано, что алгоритмы являются приемлемой темой ... – yurib
Пожалуйста, покажите больше кода. «Now' в« мы можем теперь иметь »относится ко мне – inspectorG4dget