1 题目:找树左下角的值
官方标定难度:中
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
示例 1:

输入: root = [2,1,3]
 输出: 1
示例 2:

输入: [1,2,3,4,null,5,6,null,null,7]
 输出: 7
提示:
二叉树的节点个数的范围是  
     
      
       
       
         [ 
        
       
         1 
        
       
         , 
        
        
        
          10 
         
        
          4 
         
        
       
         ] 
        
       
      
        [1,10^4] 
       
      
    [1,104]
  
     
      
       
       
         − 
        
        
        
          2 
         
        
          31 
         
        
       
         < 
        
       
         = 
        
       
         N 
        
       
         o 
        
       
         d 
        
       
         e 
        
       
         . 
        
       
         v 
        
       
         a 
        
       
         l 
        
       
         < 
        
       
         = 
        
        
        
          2 
         
        
          31 
         
        
       
         − 
        
       
         1 
        
       
      
        -2^{31} <= Node.val <= 2^{31} - 1 
       
      
    −231<=Node.val<=231−1
2 solution
深度优先搜索,先左后右,如果当前节点层数大于记录的层数,修改层数和值
代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
    int ans = 0, level = 0;
    void dfs(TreeNode *root, int l) {
        if(!root) return;
        if(l > level) ans = root->val, level = l;
        dfs(root->left, l + 1);
        dfs(root->right, l + 1);
    }
public:
    int findBottomLeftValue(TreeNode *root) {
        dfs(root, 1);
        return ans;
    }
};
 
结果




















