def printTree(self, root):
"""
:type root: TreeNode
:rtype: List[List[str]]
"""
def depth(root): #获得树的最大深度
if not root:
return 0
return 1 + max(depth(root.left),depth(root.right))
d = depth(root)
self.res = [[""]*(2**d - 1) for i in range(d)] #列是满二叉树的节点个数,行是深度
def fill(root,i,l,r):
if not root:
return
self.res[i][(l+r)/2] = str(root.val) #从上到下,每次填的是中间位置,相当于分解问题分解为左子树,右子树,递归的把根节点填到中间位置
fill(root.left,i+1,l,(l+r)/2-1) #左子树的右边界是上次填入根节点的左边
fill(root.right,i+1,(l+r)/2+1,r)
fill(root,0,0,len(self.res[0])-1)
return self.res
LC655. 输出二叉树
于 2022-04-14 17:11:19 首次发布