> For the complete documentation index, see [llms.txt](https://jaywin.gitbook.io/leetcode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jaywin.gitbook.io/leetcode/solutions/0513-find-bottom-left-tree-value.md).

# 0513. Find Bottom Left Tree Value

<https://leetcode.com/problems/find-bottom-left-tree-value>

## Description

Given the `root` of a binary tree, return the leftmost value in the last row of the tree.

**Example 1:**

![](https://assets.leetcode.com/uploads/2020/12/14/tree1.jpg)

```
**Input:** root = [2,1,3]
**Output:** 1
```

**Example 2:**

![](https://assets.leetcode.com/uploads/2020/12/14/tree2.jpg)

```
**Input:** root = [1,2,3,4,null,5,6,null,null,7]
**Output:** 7
```

**Constraints:**

* The number of nodes in the tree is in the range `[1, 104]`.
* `-231 <= Node.val <= 231 - 1`

## ac

```java
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int findBottomLeftValue(TreeNode root) {
        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);
        int res = 0;
        while (!q.isEmpty()) {
            int len = q.size();
            for (int i = 0; i < len; i++) {
                TreeNode curr = q.poll();
                if (i == 0) res = curr.val;
                if (curr.left != null) q.offer(curr.left);
                if (curr.right != null) q.offer(curr.right);
            }
        }

        return res;
    }
}

/*
just BFS, pick the first node of each level
*/
```
