题解 | #二叉树中和为某一值的路径(二)#

二叉树中和为某一值的路径(二)

http://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca

O(N),穷举

在递归过程中,递归终止条件很重要,因为只有叶子节点的时候,才可以返回 return;

此代码中,每次减去遍历过的数值expectNumber - root.val,但是切记要回溯

import java.util.*;
public class Solution {
ArrayList<ArrayList<Integer>> res;
LinkedList<Integer> path;
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int expectNumber) {
    res = new ArrayList<>();
    path = new LinkedList<>();
    tracking(root, expectNumber);
    return res;
}

public void tracking(TreeNode root, int expectNumber){
    if(root == null) return;
    
    if(root.left == null && root.right == null){//叶子节点
        if(expectNumber == root.val){
            path.add(root.val);
            res.add(new ArrayList<>(path));
            path.poll();
        }
        return;
    }
    
    path.add(root.val);
    tracking(root.left, expectNumber - root.val);
    path.pollLast();//回溯
    
    path.add(root.val);
    tracking(root.right, expectNumber - root.val);
    path.pollLast();//回溯
    
}
}
全部评论

相关推荐

accaacc:2到4k,不是2k到4k,所以年薪是30块
点赞 评论 收藏
分享
努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务