0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# 解决剑指offer:二叉树中和为某一值的路径(三)

1.简述:

描述

给定一个二叉树root和一个整数值 sum ,求该树有多少路径的的节点值之和等于 sum 。1.该题路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点2.总节点数目为n3.保证最后返回的路径个数在整形范围内(即路径个数小于231-1)

数据范围:#yyds干货盘点# 解决剑指offer:二叉树中和为某一值的路径(三)_二叉树

#yyds干货盘点# 解决剑指offer:二叉树中和为某一值的路径(三)_二叉树_02

假如二叉树root为{1,2,3,4,5,4,3,#,#,-1},sum=6,那么总共如下所示,有3条路径符合要求#yyds干货盘点# 解决剑指offer:二叉树中和为某一值的路径(三)_二叉树_03

示例1

输入:

{1,2,3,4,5,4,3,#,#,-1},6

返回值:

3

说明:

如图所示,有3条路径符合

示例2

输入:

{0,1},1

返回值:

2

示例3

输入:

{1,#,2,#,3},3

返回值:

2

2.代码实现:

import java.util.*;
public class Solution {
private int res = 0;
//dfs查询以某结点为根的路径数
private void dfs(TreeNode root, int sum){
if(root == null)
return;
//符合目标值
if(sum == root.val)
res++;
//进入子节点继续找
dfs(root.left, sum - root.val);
dfs(root.right, sum - root.val);
}
//dfs 以每个结点作为根查询路径
public int FindPath (TreeNode root, int sum) {
//为空则返回
if(root == null)
return res;
//查询以某结点为根的路径数
dfs(root, sum);
//以其子结点为新根
FindPath(root.left, sum);
FindPath(root.right, sum);
return res;
}
}
举报

相关推荐

0 条评论