数组的column应该是树的高度h * 2 + 1,row就是树的高度
following is the best solution I have ever seen:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def printTree(self, root):
"""
:type root: TreeNode
:rtype: List[List[str]]
"""
def get_height(root):
return 0 if not root else 1 + max(get_height(root.left), get_height(root.right))
def div(root, row, left, right):
if not root:
return
mid = (left + right) / 2
self.res[row][mid] = str(root.val)
div(root.left, row + 1, left, mid - 1)
div(root.right, row + 1, mid + 1, right)
row = get_height(root)
column = 2 ** row - 1
self.res = [[""] * column for i in xrange(row)]
div(root, 0, 0, column - 1)
return self.res