[LeetCode]Path Sum系列
2024-09-08 02:36:51
1.二叉树路径求指定和,需要注意的是由于有负数,所以即使发现大于目标值也不能返回false,而且返回true的条件有两个,到叶节点且等于sum,缺一不可
public boolean hasPathSum(TreeNode root, int sum) {
if (root==null) return false;
if (root.val==sum&&root.left==null&&root.right==null) return true;
else return hasPathSum(root.left,sum-root.val)||hasPathSum(root.right,sum- root.val);
}
2.跟第一题的不同是要把所有路径返回,做法一样,把所有路径都遍历一遍,每次递归返回后都要回溯,把符合要求的路径记录
public List<List<Integer>> pathSum(TreeNode root, int sum) {
List<List<Integer>> tp=new ArrayList<List<Integer>>();
List<Integer> cu=new ArrayList<Integer>();
int total=0;
dfs(root, tp, cu,total,sum);
return tp;
}
public void dfs(TreeNode root,List<List<Integer>> tp, List<Integer> cu,int total,int sum){
if(root==null)
return;
cu.add(root.val);
total=total+root.val;
if(root.left==null&&root.right==null&&total==sum){
tp.add(new ArrayList(cu));
return;
}
if (root.left!=null){
dfs(root.left,tp, cu,total,sum);
cu.remove(cu.size()-1);
}
if (root.right!=null){
dfs(root.right,tp, cu,total,sum);
cu.remove(cu.size()-1);
}
}
3.不要求开头和结尾是根节点和叶节点,但是顺序必须自上而下,做法是递归的把所有节点都当做根节点判断一遍,每次判断时不同的地方是不用判断到没到叶节点,而且=target后不返回,只是结果+1,继续向下判断。
public int pathSum(TreeNode root, int sum) {
int cu=0;
if (root == null)
return 0;
return dfs(root,sum,cu)+pathSum(root.left,sum)+pathSum(root.right,sum);
// 开始的点不一定是根节点,采取的方法是返回根节点函数+左子节点函数+右子节点函数,这样递归后就可以实现所有节点都可以作为开始
}
public int dfs(TreeNode root,int sum,int cu){
int re=0;
if (root == null)
return re;
cu+=root.val;
if(cu == sum)
re++;
re+=dfs(root.left,sum,cu);
re+=dfs(root.right,sum,cu);
return re;
}
最新文章
- 【译】Unity3D Shader 新手教程(5/6) &mdash;&mdash; Bumped Diffuse Shader
- [JSOI2008]完美的对称 题解
- My Game --线段数据
- CodeForces 414D (贪心)
- 配置IIS服务器,APK文件下载
- Readonly and other things about C++
- axure制作项目符号列表样式
- 缓存MEMCACHE php调用(一)
- Oracle 11g streams部署
- 题解——洛谷P2827 NOIP提高组 2016 蚯蚓
- 第13章:MongoDB-聚合操作--初体验
- 洛谷 P5206: bzoj 5475: LOJ 2983: [WC2019] 数树
- Java 两个日期间的天数计算
- mongodb cmd 常用命令
- C#正则_取出标签内的内容(非贪婪)
- WPF 中的 NameScope
- PHP - MongoDB连接攻略
- 【BZOJ4552】【HEOI2016】排序 [二分答案][线段树]
- GPDB 5.x PSQL Quick Reference
- python统计文档中词频