登录
  • #刷题
  • #leetcode

Tree的recursion还是逻辑不清-Lc437 Path Sum III

akdhfikbk
749
6
正在练习那个嵌套recusion的问题,搞不清两个function的物理意义是什么这是我的代码:

[mw_shl_code=java,true] public int pathSum(TreeNode root, int sum) {

if(root==null) return 0;



//root+left+right

//this is wrong answer

//return findPath(root, sum)+findPath(root.left, sum)+findPath(root.right,sum);

return findPath(root, sum)+pathSum(root.left, sum)+pathSum(root.right,sum);

}



private int findPath(TreeNode root, int sum){

//base case

if(root==null) return 0;

int counter=0;

sum=sum-root.val;

if(sum==0) counter ++;

return counter + findPath(root.left, sum)+findPath(root.right,sum);

}[/mw_shl_code]

目前我的理解是:

findPath是 每次从头节点出发,count path路径次数;

pathSum是 让每一个节点都是新的头节点;

我主要对于pathSum这个function的物理意义有疑问,不清楚其作用,如果不考虑findPath程序没被调用的问题,我这样的表达式的物理意义也没问题啊:

[mw_shl_code=java,true]pathSum(root, sum)+pathSum(root.left, sum)+pathSum(root.right,sum)[/mw_shl_code]

这样写的唯一问题就是findPath function没被调用,不过真要return这样的话,可以改动下findPath在pathSum中的位置实现吗?
6条回复
热度排序

发表回复