1. 二叉树算法实战:LeetCode经典题目精解
作为一名刷过300+道LeetCode题目的老手,我深知二叉树类题目在面试中的高频出现率。今天要分享的两道题目——513.找树左下角的值和112.路径总和1,都是二叉树遍历的经典应用,看似简单却暗藏玄机。这两道题分别考察了我们对二叉树层级遍历和递归回溯的理解,也是Google、Amazon等大厂常考的面试题。
在实际面试中,面试官往往会先问基础解法,然后逐步深入要求优化,甚至扩展到变种问题。我遇到过不止一位面试官在考察112题后,紧接着就追问路径总和2的解法。因此,彻底吃透这两道题的多种解法,对我们应对真实面试场景至关重要。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 题目解析与解题思路
2.1 513.找树左下角的值题目分析
题目要求找出二叉树最后一行最左边的值。举个例子:
code复制 1
/ \
2 3
/ / \
4 5 6
/
7
这棵树最后一行是[4,7,6],最左边的是4,所以应该返回4。
关键点在于"最后一行最左边",这意味着我们需要:
- 准确找到最后一层
- 在该层中确定最左侧的节点
2.2 112.路径总和1题目分析
题目给出一个二叉树和一个目标和,要求判断是否存在从根节点到叶子节点的路径,使得路径上所有节点值相加等于目标和。例如:
code复制 5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
如果目标和是22,那么路径5→4→11→2满足条件,应该返回true。
这道题考察的是:
- 深度优先搜索(DFS)的应用
- 递归过程中状态的管理
- 叶子节点的准确判断
3. 513题解法详解
3.1 广度优先搜索(BFS)解法
BFS是这道题最直观的解法,通过层级遍历,记录每一层的第一个节点,最后自然得到最后一层的第一个节点。
python复制from collections import deque
def findBottomLeftValue(root):
if not root:
return None
queue = deque([root])
