-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLC_Binary_Tree_Vertical_Order_Traversal.py
110 lines (92 loc) · 1.87 KB
/
LC_Binary_Tree_Vertical_Order_Traversal.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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
"""
314. Binary Tree Vertical Order Traversal
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bottom, column by column).
If two nodes are in the same row and column, the order should be from left to right.
Examples 1:
Input: [3,9,20,null,null,15,7]
3
/\
/ \
9 20
/\
/ \
15 7
Output:
[
[9],
[3,15],
[20],
[7]
]
Examples 2:
Input: [3,9,8,4,0,1,7]
3
/\
/ \
9 8
/\ /\
/ \/ \
4 01 7
Output:
[
[4],
[9],
[3,0,1],
[8],
[7]
]
Examples 3:
Input: [3,9,8,4,0,1,7,null,null,null,2,5] (0's right child is 2 and 1's left child is 5)
3
/\
/ \
9 8
/\ /\
/ \/ \
4 01 7
/\
/ \
5 2
Output:
[
[4],
[9,5],
[3,0,1],
[8,2],
[7]
]
"""
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
"""
Have a level order traversal and when going left and right.. call left with col-1 and right col+1
have a hashmap with col number as key and node value..
go form min col to max col and output the node values
"""
class Solution(object):
def verticalOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
hashMap = collections.defaultdict(list)
mincol = maxcol = 0
Queue = [(0, root)]
for (col, node) in Queue:
if (node == None):
continue;
mincol = min(col, mincol)
maxcol = max(col, maxcol)
hashMap[col].append(node.val)
Queue.append ((col-1, node.left))
Queue.append ((col+1, node.right))
Ans = []
if (0 == len(hashMap)):
return Ans
for key in range(mincol, maxcol+1):
Ans.append(hashMap[key])
return Ans