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

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

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

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.stream.Collectors;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int expectNumber) {
        ArrayList<ArrayList<Integer>> results = new ArrayList<>();
        LinkedList<Integer> queue = new LinkedList<>();
        int sum = 0;
        if (root != null) {
            addDatas(root, expectNumber, results, queue, sum);
        }
        return results;
    }

    private void addDatas(TreeNode root, int expectNumber,
                          ArrayList<ArrayList<Integer>> results, LinkedList<Integer> queue, int sum) {
        if (root != null) {
            sum += root.val;
            queue.add(root.val);
            if (sum == expectNumber && root.left == null && root.right == null) {
                addResult(results, queue);
            } else {
                addDatas(root.left, expectNumber, results, queue, sum);
                addDatas(root.right, expectNumber, results, queue, sum);
            }
            queue.pollLast();
            sum -= root.val;
        }
    }


    private void addResult(ArrayList<ArrayList<Integer>> results,
                           LinkedList<Integer> queue) {
        // 循环队列中的元素
        ArrayList<Integer> result = (ArrayList)queue.stream().collect(
                                        Collectors.toList());
        results.add(result);
    }
}

解题思想:队列+递归+回朔

#算法##算法笔记#
全部评论

相关推荐

2024-12-25 09:09
四川师范大学 运营
想和你交朋友的潜伏者要冲国企:先去沃尔玛亲身感受标准化流程体系,一两年后再跳槽国内任何零售行业,可以有更大选择权吧?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务