Simple JS DFS Solution
\n/**\n * Definition for a binary tree node.\n * function TreeNode(val, left, right) {\n *     this.val = (val===undefined ? 0 : val)\n *     this.left = (left=
```\n/**\n * Definition for a binary tree node.\n * function TreeNode(val, left, right) {\n *     this.val = (val===undefined ? 0 : val)\n *     this.left = (left===undefined ? null : left)\n *     this.right = (right===undefined ? null : right)\n * }\n */\n/**\n * @param {TreeNode} root\n * @return {number}\n */\nvar findBottomLeftValue = function(root) {\n    let nextMaxLevel = 0;\n    let bottomleftVal = 0;\n    const dfs = (root, level) => {\n        if(!root) return;\n        if(level === nextMaxLevel) {\n            bottomleftVal = root.val\n            nextMaxLevel+=1;\n        }\n        dfs(root.left, level+1);\n        dfs(root.right, level+1);\n    }\n    dfs(root, 0);\n    return bottomleftVal;\n};\n```
['Depth-First Search', 'JavaScript']