Skip to content

Commit 0b850f1

Browse files
committed
regular leetcode
1 parent 9baddc9 commit 0b850f1

3 files changed

+159
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
###102. Binary Tree Level Order Traversal
2+
3+
题目:
4+
5+
<https://leetcode.com/problems/binary-tree-level-order-traversal/>
6+
7+
8+
难度:
9+
10+
Easy
11+
12+
13+
我觉得并不easy
14+
15+
两种做法,利用curLevel和nextLevel来记录,然后按层append.
16+
17+
18+
```
19+
class Solution(object):
20+
def levelOrder(self, root):
21+
"""
22+
:type root: TreeNode
23+
:rtype: List[List[int]]
24+
"""
25+
res = []
26+
27+
if root == None: return []
28+
29+
curLevel = [root]
30+
while curLevel:
31+
nextLevel = []
32+
tmpRes = []
33+
for node in curLevel:
34+
tmpRes.append(node.val)
35+
if node.left: nextLevel.append(node.left)
36+
if node.right: nextLevel.append(node.right)
37+
res.append(tmpRes)
38+
curLevel = nextLevel
39+
40+
return res
41+
```
42+
43+
44+
第二种做法:
45+
46+
47+
48+
```
49+
class Solution:
50+
# @param root, a tree node
51+
# @return a list of lists of integers
52+
def preorder(self, root, level, res):
53+
if root:
54+
if len(res) < level+1: res.append([])
55+
res[level].append(root.val)
56+
self.preorder(root.left, level+1, res)
57+
self.preorder(root.right, level+1, res)
58+
def levelOrder(self, root):
59+
res=[]
60+
self.preorder(root, 0, res)
61+
return res
62+
```
63+
用递归来记录每一层,需要更加学习,不算easy
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
###103. Binary Tree Zigzag Level Order Traversal
2+
3+
题目:
4+
5+
<https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/>
6+
7+
8+
难度:
9+
10+
Medium
11+
12+
13+
继续用102 的算法作弊
14+
15+
使用102作弊的题目都需要再努力寻求一下别家解法
16+
17+
```
18+
19+
class Solution(object):
20+
def zigzagLevelOrder(self, root):
21+
"""
22+
:type root: TreeNode
23+
:rtype: List[List[int]]
24+
"""
25+
res = []
26+
if root == None: return []
27+
28+
curLevel = [root]
29+
levelCount = 0
30+
while curLevel:
31+
nextLevel = []
32+
tmpRes = []
33+
for node in curLevel:
34+
tmpRes.append(node.val)
35+
if node.left: nextLevel.append(node.left)
36+
if node.right: nextLevel.append(node.right)
37+
if levelCount % 2 == 0:
38+
res.append(tmpRes)
39+
else :
40+
tmpRes.reverse()
41+
res.append(tmpRes)
42+
levelCount += 1
43+
curLevel = nextLevel
44+
45+
return res
46+
```
47+
48+
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
###107. Binary Tree Level Order Traversal II
2+
3+
题目:
4+
5+
<https://leetcode.com/problems/binary-tree-level-order-traversal-ii/>
6+
7+
8+
难度:
9+
10+
Easy
11+
12+
13+
用102 的算法作弊
14+
15+
16+
```
17+
# Definition for a binary tree node.
18+
# class TreeNode(object):
19+
# def __init__(self, x):
20+
# self.val = x
21+
# self.left = None
22+
# self.right = None
23+
24+
class Solution(object):
25+
def levelOrderBottom(self, root):
26+
"""
27+
:type root: TreeNode
28+
:rtype: List[List[int]]
29+
"""
30+
res = []
31+
32+
if root == None: return []
33+
34+
curLevel = [root]
35+
while curLevel:
36+
nextLevel = []
37+
tmpRes = []
38+
for node in curLevel:
39+
tmpRes.append(node.val)
40+
if node.left: nextLevel.append(node.left)
41+
if node.right: nextLevel.append(node.right)
42+
res.append(tmpRes)
43+
curLevel = nextLevel
44+
res.reverse()
45+
return res
46+
```
47+
48+

0 commit comments

Comments
 (0)