C++ recursive solution (beats 100%) with basic explanation
Idea is simple:\nKeep track of the depth of the tree as you move along. Once you get out of left and right subtree of a node, update the leftVal. Code is quite 
Idea is simple:\nKeep track of the depth of the tree as you move along. Once you get out of left and right subtree of a node, update the leftVal. Code is quite self explanatory. I have added some basic documentation. I hope that it helps!\n\n```\nclass Solution {\npublic:\n    void findBottomLeftValue(TreeNode* root, int& maxDepth, int& leftVal, int depth) {\n        if (root == NULL) {\n            return;\n        }\n        //Go to the left and right of each node \n        findBottomLeftValue(root->left, maxDepth, leftVal, depth+1);\n        findBottomLeftValue(root->right, maxDepth, leftVal, depth+1);\n        \n        //Update leftVal and maxDepth\n        if (depth > maxDepth) {\n            maxDepth = depth;\n            leftVal = root->val;\n        }\n    }\n    \n    //Entry function\n    int findBottomLeftValue(TreeNode* root) {\n        int maxDepth = 0;\n        //Initialize leftVal with root's value to cover the edge case with single node\n        int leftVal = root->val;\n        findBottomLeftValue(root, maxDepth, leftVal, 0);\n        return leftVal;\n    }\n};\n```
[]