u = len(s) first_line = (x + 1) * ' ' + (n - x - 1) * \ '_' + s + y * '_' + (m - y) * ' ' second_line = x * ' ' + '/' + \ (n - x - 1 + u + y) * ' ' + '\\' + (m - y - 1) * ' ' if p < q: left += [n * ' '] * (q - p) elif q < p: right += [m * ' '] * (p - q) zipped_lines = zip(left, right) lines = [first_line, second_line] + \ [a + u * ' ' + b for a, b in zipped_lines] return lines, n + m + u, max(p, q) + 2, n + u // 2 BST = BinarySearchTree(6) BST.insert(3) BST.insert(2) BST.insert(4) BST.insert(-1) BST.insert(1) BST.insert(-2) BST.insert(8) BST.insert(7) print("before deletion:") display(BST.root) BST.delete(6) print("after deletion:") display(BST.root)