513. Find Bottom Left Tree Value

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 notNULL.

Analysis:

BFS level order traversal, record first queue element value when level count decrease to zero(last level finished)

Code:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public int findBottomLeftValue(TreeNode root) {
        Deque<TreeNode> queue = new LinkedList<TreeNode>();
        int firstOfLevel = root.val;
        int count = 1;
        queue.offer(root);
        while(!queue.isEmpty())
        {
            TreeNode cur = queue.poll();
            count--;
            if(cur.left != null)
            {
                queue.offer(cur.left);
            }
            if(cur.right != null)
            {
                queue.offer(cur.right);
            }

            if(count == 0){
                if(!queue.isEmpty())
                {
                    firstOfLevel = queue.peek().val;
                }
                count = queue.size();
            }
        }
        return firstOfLevel;
    }
}

results matching ""

    No results matching ""