avatar
path sum II OJ 超时# JobHunting - 待字闺中
b*m
1
我的理解就是个DFS, 我写的有啥问题吗?
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public ArrayList> pathSum(TreeNode root, int sum) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList> results = new ArrayList();
if(root==null){
return results;
}
ArrayList path = new ArrayList();

dfs(results,path,root,sum);
return results;
}

private void dfs(List results, List path, TreeNode node, int sum){
if(node.left ==null && node.right == null){
if( sum == node.val ){
ArrayList result = new ArrayList(path.size()+1);
result.addAll(path);
result.add(node);
results.add(result);
}
return;
}

path.add(node);
sum -= node.val;
if(node.left!=null){
dfs(results,path,node.left, sum);
}
if(node.right!=null){
dfs(results,path,node.right, sum);
}
path.remove(path.size()-1);
}
}
avatar
h*g
2
递归做完左右子数之后应该popback一下吧?Java里容器默认是引用调用?
avatar
h*g
3
到leaf 的时候也要path.remove(path.size()-1);吧
avatar
b*m
4
我觉得到leaf 不需要因为本来也没把leaf节点加进path里。

【在 h****g 的大作中提到】
: 到leaf 的时候也要path.remove(path.size()-1);吧
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。