Find bottom left tree value
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
maxdepth = 0
res = root.val
depth = 0
def backtrack(node):
nonlocal maxdepth
nonlocal depth
nonlocal res
if not node.left and not node.right:
if depth > maxdepth:
res = node.val
maxdepth = depth
if node.left:
depth += 1
backtrack(node.left)
depth -= 1
if node.right:
depth += 1
backtrack(node.right)
depth -= 1
backtrack(root)
return res
# def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
# queue = deque([root])
# res = root.val
# while queue:
# size = len(queue)
# for i in range(size):
# node = queue.popleft()
# if i == 0:
# res = node.val
# if node.left:
# queue.append(node.left)
# if node.right:
# queue.append(node.right)
# return res
Find Bottom Left Tree Value
Given the root of a binary tree, return the leftmost value in the last row of the tree.
Example 1:

Input: root = [2,1,3] Output: 1
Example 2:

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