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.

Leetcode Find Bottom Left Tree Value problem solution


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;
    }
};