Не могу понять, как удалить конечный пробел из моего результата
Мой код находит вход для сбалансированного двоичного дерева из массива.
array = [178, 57, 26, 157, 679, 397, 898]
def myFunc(x):
for i in range(1, len(x)):
inp = x[i]
j=i-1
while j>=0 and inp<x[j]:
x[j+1] = x[j]
j-=1
x[j+1] = inp
x
class tn(object):
def __init__(self, y):
self.val = y
self.left = None
self.right =None
def sort2bst(x):
if not x:
return None
m = len(x)//2
node = tn(x[m])
node.left = sort2bst(x[:m])
node.right = sort2bst(x[m+1:])
return node
def po(node):
if not node:
return
print(node.val, end=" ")
po(node.left)
po(node.right)
result = sort2bst(x)
po(result)
myFunc(array)
Результат выглядит так:
178 57 26 157 679 397 898
До сих пор мне удавалось делать все, кроме удаления конечных пробелов из вывода. Я должен использовать
end=" "
для вывода в одной строке, но это означает, что последнее значение также имеет пустое место после него. Я пытался использовать
.rstrip()
но это тоже не работает, потому что я думаю, что это работает только со строками. Как мне удалить этот пробел в конце?
1 ответ
Решение
Вместо непрерывной печати вы можете собрать результаты и создать строку, как только вы их все получите:
def po(node):
if not node:
return []
return [str(node.val), *po(node.left), *po(node.right)]
result = sort2bst(x)
print(" ".join(po(result)))