Не могу понять, как удалить конечный пробел из моего результата

Мой код находит вход для сбалансированного двоичного дерева из массива.

      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)))
Другие вопросы по тегам