# Leetcode 655 Solution

This article provides solution to leetcode question 655 (print-binary-tree)

https://leetcode.com/problems/print-binary-tree

## Solution

``````# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
def printTree(self, root: TreeNode) -> List[List[str]]:
self.widths = [0] * 10
self.height = 0

def get_width(node, depth):
if node is None:
return 0
left_width = get_width(node.left, depth + 1)
right_width = get_width(node.right, depth + 1)
width = 1 + 2 * max(left_width, right_width)
self.widths[depth] = max(self.widths[depth], width)
self.height = max(self.height, depth)
return width

get_width(root, 0)

self.ans = [[""] * self.widths[0] for _ in range(self.height + 1)]

def fill(node, depth, offset):
if node is None:
return

mid = self.widths[depth] // 2
self.ans[depth][offset + mid] = str(node.val)

fill(node.left, depth + 1, offset)
fill(node.right, depth + 1, offset + mid + 1)

fill(root, 0, 0)

return self.ans
``````