У меня есть эта функция def validate(self), которая должна проверять, является ли данный массив допустимой минимальной кучей. Я думаю, что это работает, но поскольку мои массивы имеют None в начале, например [None, 2, 3, 5], похоже, возникают проблемы и выдается ошибка '<' not supported between instances of 'int' and 'NoneType'
Как я могу пропустить значение none в моем коде?
def validate(self):
"""
Validates the heap. Returns True if the heap is a valid min-heap, and
False otherwise.
"""
n = self.__len__()
for i in range(int((n - 2) / 2) + 2):
if self._items[2 * i + 1] < self._items[i]:
return False
if (2 * i + 2 < n and self._items[2 * i + 2] > self._items[i]):
return False
return True
Новый код:
def validate(self):
"""
Validates the heap. Returns True if the heap is a valid min-heap, and
False otherwise.
"""
n = self.__len__()
for i in range(int((n - 2) / 2) + 2):
if self._items[i] != None:
if self._items[2 * i + 1] < self._items[i]:
return False
if (2 * i + 2 < n and self._items[2 * i + 2] > self._items[i]):
return False
Ошибка:
File "<doctest __main__.MinHeap.validate[8]>", line 1, in <module>
h.validate()
File "x-wingide-python-shell://114699264/2", line 219, in validate
TypeError: '>' not supported between instances of 'int' and 'NoneType'
None
нельзя сравнивать с другими элементами, поэтому он не должен быть частью массива кучи. Я думаю, что полученное двоичное дерево не сбалансировано... - person Kate Melnykova   schedule 30.01.2021