-
Notifications
You must be signed in to change notification settings - Fork 193
/
Copy path655.py
24 lines (24 loc) · 902 Bytes
/
655.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution:
def printTree(self, root):
"""
:type root: TreeNode
:rtype: List[List[str]]
"""
def traverse(node):
if not node: return 0
return max(traverse(node.left), traverse(node.right)) * 2 + 1
length = traverse(root)
stack, dic, res, padding = [root], {root : length // 2}, [], length // 2
while any(stack):
out, tmp, padding = [""] * length, [], padding // 2
for i, node in enumerate(stack):
out[dic[node]] = str(node.val)
if node.left:
dic[node.left] = dic[node] - padding - 1
tmp.append(node.left)
if node.right:
dic[node.right] = dic[node] + padding + 1
tmp.append(node.right)
res.append(out)
stack = tmp
return res