Leetcode Find Bottom Left Tree Value problem solution

In this Leetcode Find Bottom Left Tree Value problem solution Given the root of a binary tree, return the leftmost value in the last row of the tree.

Problem solution in Python.

```class Solution:
def findBottomLeftValue(self, root: TreeNode) -> int:
if not root:
return
stack = [root]

while stack:
res = []
temp = []
for i in stack:
if i:
if i.left:
temp.append(i.left)
if i.right:
temp.append(i.right)
res.append(i.val)
stack = temp

return res[0]```

Problem solution in Java.

```class Solution {
public int findBottomLeftValue(TreeNode root) {

if(root == null) throw new IllegalArgumentException();

TreeMap<Integer,Integer> depthsMap = new TreeMap();
populateSiblings(root, depthsMap , 1);

Integer last = depthsMap.lastKey();
return depthsMap.get(last);

}
public void populateSiblings(TreeNode root, TreeMap<Integer,Integer> depthsMap , int depth )
{
if (root == null) return;
depthsMap.computeIfAbsent(depth , x -> root.val);
populateSiblings(root.left, depthsMap , depth+1);
populateSiblings(root.right, depthsMap , depth+1);

}
}```

Problem solution in C++.

```class Solution {
public:
int findBottomLeftValue(TreeNode* root) {
queue<TreeNode*> q;
q.push(root);

int n = -1;
while (q.size()) {
n = q.front()->val;

int s = q.size();
for (int i = 0; i < s; ++i) {
TreeNode* node = q.front();
q.pop();
if (node->left)  q.push(node->left);
if (node->right) q.push(node->right);
}
}
return n;
}
};```