#python
Вопрос:
у меня есть список кортежей в формате [(«A»,1),(«B»,2)……], я хочу создать сбалансированное двоичное дерево на основе целочисленных значений. я попытался сделать что-то вроде приведенного ниже кода, но получил ошибку рекурсии: превышена максимальная глубина рекурсии
def createBalancedTreeFromSortedArray(self,arr):
arr = [("A",1),("B",2),("C",3),("D",4),("E",5)]
sortedarr = sorted(arr, key=lambda x: x[-1])
mid = len(sortedarr)//2
newroot= Node(sortedarr[mid][0],sortedarr[mid][1])
newroot.left= self.createBalancedTreeFromSortedArray(sortedarr[:mid -1])
newroot.right= self.createBalancedTreeFromSortedArray(sortedarr[mid 1:])
return newroot
Комментарии:
1.
arr = [("A",1),("B",2),("C",3),("D",4),("E",5)]
не должно быть внутри функции, это первая ошибка, которую я вижу2. Для рекурсии вы должны включить «конец случая рекурсии», например, если len(arr)==1 …. сделайте что-нибудь простое…