leetcode 513 find bottom left tree value


分析:

  1. 这道题是要找最左下的结点,我们可以先找到最低一层,然后找到该层最左边的结点就OK了
  2. 显然bfs可以很好的完成按层查找的功能

思路:

  1. 我们使用一个None结点代表一层的遍历结束,用一个lastnode变量记录上一个访问的结点
  2. 如果lastnode = None,说明此时遍历的结点就是该层的第一个结点,即最左边的结点
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
class (object):
def findBottomLeftValue(self, root):
"""
:type root: TreeNode
:rtype: int
"""

Q = collections.deque([root,None])
lastnode,res = None,0
while Q:
node = Q.popleft()
if lastnode == None:
res = node.val
lastnode = node
# 处理一层结束时的情况
if node == None:
if not Q:
return res
Q.append(None)
continue

if node.left: Q.append(node.left)
if node.right: Q.append(node.right)

74 / 74 test cases passed.
difficulty: medium
Runtime: 36 ms,beats 100%