问题分类
二叉树路径的问题大致可以分为两类:
1.自顶向下:
顾名思义,就是 从某一个节点(不一定是根节点),从上向下寻找路径,到某一个节点(不一定是叶节点)结束具体问题如下:
- 二叉树的所有路径
面试题 04.12. 求和路径 - 路径总和
- 路径总和 II
- 路径总和 III
- 从叶结点开始的最小字符串
而继续细分的话还可以分成一般路径与给定和的路径
2、非自顶向下:
就是从任意节点到任意节点的路径,不需要自顶向下
124. 二叉树中的最大路径和
687. 最长同值路径
543. 二叉树的直径
解题模板
这类题通常用深度优先搜索(DFS)和广度优先搜索(BFS)解决,BFS较DFS繁琐,这里为了简洁只展现DFS代码
一、自顶而下
dfs
一般路径:
vector<vector<int>>res;
void dfs(TreeNode*root,vector<int>path)
{
if(!root) return; //根节点为空直接返回
path.push_back(root->val); //作出选择
if(!root->left && !root->right) //如果到叶节点
{
res.push_back(path);
return;
}
dfs(root->left,path); //继续递归
dfs(root->right,path);
}
# **给定和的路

这篇博客介绍了二叉树路径问题的两种主要类型:自顶向下和非自顶向下,并提供了解题模板。自顶向下问题包括路径总和等,非自顶向下如最长路径等,通常使用DFS解决。文中以路径总和II为例,解释了如何找到从根节点到叶子节点路径总和等于给定目标和的路径。
最低0.47元/天 解锁文章
1031

被折叠的 条评论
为什么被折叠?



