Skip to content

Commit 93ac861

Browse files
committed
Adding solution of problems 103 and 107
1 parent 2b5f8ef commit 93ac861

File tree

2 files changed

+118
-0
lines changed

2 files changed

+118
-0
lines changed

100-200q/103.py

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
'''
2+
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).
3+
4+
For example:
5+
Given binary tree [3,9,20,null,null,15,7],
6+
7+
3
8+
/ \
9+
9 20
10+
/ \
11+
15 7
12+
13+
return its zigzag level order traversal as:
14+
15+
[
16+
[3],
17+
[20,9],
18+
[15,7]
19+
]
20+
'''
21+
22+
# Definition for a binary tree node.
23+
# class TreeNode(object):
24+
# def __init__(self, x):
25+
# self.val = x
26+
# self.left = None
27+
# self.right = None
28+
29+
class Solution(object):
30+
def zigzagLevelOrder(self, root):
31+
"""
32+
:type root: TreeNode
33+
:rtype: List[List[int]]
34+
"""
35+
36+
if not root:
37+
return []
38+
39+
queue = [(root, 0)]
40+
levelMap = {}
41+
42+
while queue:
43+
node, level = queue.pop(0)
44+
if node.left:
45+
queue.append((node.left, level+1))
46+
if node.right:
47+
queue.append((node.right, level+1))
48+
49+
if level in levelMap:
50+
levelMap[level].append(node.val)
51+
else:
52+
levelMap[level] = [node.val]
53+
54+
result = []
55+
spiral = False
56+
for key, value in levelMap.iteritems():
57+
if spiral:
58+
value = value[::-1]
59+
result.append(value)
60+
spiral = not spiral
61+
return result

100-200q/107.py

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
'''
2+
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).
3+
4+
For example:
5+
Given binary tree [3,9,20,null,null,15,7],
6+
7+
3
8+
/ \
9+
9 20
10+
/ \
11+
15 7
12+
13+
return its bottom-up level order traversal as:
14+
15+
[
16+
[15,7],
17+
[9,20],
18+
[3]
19+
]
20+
'''
21+
22+
# Definition for a binary tree node.
23+
# class TreeNode(object):
24+
# def __init__(self, x):
25+
# self.val = x
26+
# self.left = None
27+
# self.right = None
28+
29+
class Solution(object):
30+
def levelOrderBottom(self, root):
31+
"""
32+
:type root: TreeNode
33+
:rtype: List[List[int]]
34+
"""
35+
36+
if not root:
37+
return []
38+
39+
queue = [(root, 0)]
40+
levelMap = {}
41+
42+
while queue:
43+
node, level = queue.pop(0)
44+
if node.left:
45+
queue.append((node.left, level+1))
46+
if node.right:
47+
queue.append((node.right, level+1))
48+
49+
if level in levelMap:
50+
levelMap[level].append(node.val)
51+
else:
52+
levelMap[level] = [node.val]
53+
54+
result = []
55+
for key, value in levelMap.iteritems():
56+
result.append(value)
57+
return result[::-1]

0 commit comments

Comments
 (0)