def str_tree(atree,indent_char ='.',indent_delta=2):
def str_tree_1(indent,atree):
if atree == None:
return ''
else:
answer = ''
answer += str_tree_1(indent+indent_delta,atree.right)
answer += indent*indent_char+str(atree.value)+'\n'
answer += str_tree_1(indent+indent_delta,atree.left)
return answer
return str_tree_1(0,atree)
def build_balanced_bst(l):
d = []
if len(l) == 0:
return None
else:
mid = (len(l)-1)//2
if mid >= 1:
d.append(build_balanced_bst(l[:mid]))
d.append(build_balanced_bst(l[mid:]))
else:
return d
build_balanced_bst (l) принимает список уникальных значений, которые сортируются в порядке возрастания. Он возвращает ссылку на корень хорошо сбалансированного двоичного дерева поиска. Например, вызов build_ballanced_bst (список (IRange (1,10)) возвращает двоичное дерево поиска высоты 3, будет печатать как:Печать двоичного дерева в определенном формате
......10
....9
..8
......7
....6
5
......4
....3
..2
....1
Функции str_tree гравюры, что функция возвращает build_balanced_bst
Я нахожусь работающих на build_balanced_bst (л) функции, чтобы сделать его применить к функции str_tree я использовал среднее значение в списке в качестве значения суперпользователя Но когда я вызываю функцию как способ ниже:..
l = list(irange(1,10))
t = build_balanced_bst(l)
print('Tree is\n',str_tree(t),sep='')
его не печатает что-нибудь. Может ли кто-нибудь помочь мне исправить мою функцию build_balanced_bst (l)?