-
Notifications
You must be signed in to change notification settings - Fork 306
/
Copy path515.py
58 lines (49 loc) · 1.58 KB
/
515.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
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author: Yu Zhou
# 515. Find Largest Value in Each Tree Row
# 这道题和打印每一层的数几乎相同(102)
# 本身的思路是原封不动的用102的思路,把所有的数都先Insert到最终的res
# 然后在每个内层的Array取最大值,然后输出,但浪费了太多的空间
# 所以经过改良,每次有新的层数的时候,只需要一个Temp的int值来记录累计最大值就行了
# 节省了很多的空间
# ****************
# Final Solution *
# ****************
class Solution(object):
def largestValues(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
self.res = []
self.helper(root, 0)
return self.res
def helper(self, node, level):
if not node:
return
if level >= len(self.res):
self.res.append(node.val)
self.res[level] = max(self.res[level], node.val)
self.helper(node.left, level+1)
self.helper(node.right, level+1)
# ******************
# Before Optimized *
# ******************
class Solution(object):
def __init__(self):
self.res = []
def largestValues(self, root):
self.helper(root, 0)
final = []
for arr in self.res:
final.append(max(arr))
return final
def helper(self, node, level):
if not node:
return
if level >= len(self.res):
self.res.append([])
self.res[level].append(node.val)
self.helper(node.left, level+1)
self.helper(node.right, level+1)