[LeetCode] 513. Find Bottom Left Tree Value_ Medium tag: BFS [LeetCode] 199. Binary Tree Right Side View_ Medium tag: BFS, Amazon

Given a binary tree, find the leftmost value in the last row of the tree.

Example 1:

Input:

    2
   / \
  1   3

Output:
1

Example 2: 

Input:

        1
       / \
      2   3
     /   / \
    4   5   6
       /
      7

Output:
7

Note: You may assume the tree (i.e., the given root node) is not NULL.

这个题的思路其实跟[LeetCode] 199. Binary Tree Right Side View_ Medium tag: BFS, Amazon里面我提到的left side view一样的思路, 只是返回的时候返回最后一个元素即可.

1. Constraints

1) root cannot be None, 所以edge case就是 1

2, Ideas

BFS:       T: O(n),   S: O(n)    n is the number of the nodes of the tree

3. Code

 1 class Solution:
 2     def LeftViewMost(self, root):
 3         ans, queue = [], collections.deque([(root, 0)])
 4         while queue:
 5             node, heig = queue.popleft()
 6             if heig == len(ans):
 7                 ans.append(node.val)
 8             if node.left:
 9                 queue.append(node.left)
10             if node.right:
11                 queue.append(node.right)
12         return ans[-1]

4. Test case

1) root is 1

2) 

    2
   / \
  1   3

3)
        1
       / \
      2   3
     /   / \
    4   5   6
       /
      7

猜你喜欢

转载自www.cnblogs.com/Johnsonxiong/p/9271567.html