Skip to content

Commit 05c0cc3

Browse files
committed
Update binary-tree-vertical-order-traversal.py
1 parent 812d05e commit 05c0cc3

File tree

1 file changed

+9
-23
lines changed

1 file changed

+9
-23
lines changed

Python/binary-tree-vertical-order-traversal.py

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,12 @@ def verticalOrder(self, root):
1515
:type root: TreeNode
1616
:rtype: List[List[int]]
1717
"""
18-
if not root:
19-
return []
20-
21-
lookup = collections.defaultdict(list)
22-
min_idx, max_idx = float("inf"), float("-inf")
23-
24-
pre_level = [(root, 0)]
25-
while pre_level:
26-
cur_level = []
27-
for n, i in pre_level:
28-
min_idx, max_idx = min(min_idx, i), max(max_idx, i)
29-
lookup[i] += [n.val]
30-
if n.left:
31-
cur_level.append((n.left, i - 1))
32-
if n.right:
33-
cur_level.append((n.right, i + 1))
34-
pre_level = cur_level
35-
36-
res = []
37-
for i in xrange(min_idx, max_idx + 1):
38-
res.append(lookup[i])
39-
40-
return res
18+
"""
19+
cols = collections.defaultdict(list)
20+
queue = [(root, 0)]
21+
for node, i in queue:
22+
if node:
23+
cols[i].append(node.val)
24+
queue += (node.left, i - 1), (node.right, i + 1)
25+
return [cols[i] for i in xrange(min(cols.keys()), max(cols.keys()) + 1)] \
26+
if cols else []

0 commit comments

Comments
 (0)