美文网首页
剑指 Offer 第34题:二叉树中和为某一值的路径

剑指 Offer 第34题:二叉树中和为某一值的路径

作者: 放开那个BUG | 来源:发表于2022-08-02 10:06 被阅读0次

    1、前言

    题目描述

    2、思路

    使用回溯的基本思路:先遍历这个节点,再去掉,一直到根节点为止。

    3、代码

    class Solution {
    
        private List<List<Integer>> res = new ArrayList<>();
    
        public List<List<Integer>> pathSum(TreeNode root, int target) {
            if(root == null){
                return new ArrayList<>();
            }
            dfs(root, target, new ArrayList<>());
    
            return res;
        }
    
        private void dfs(TreeNode root, int target, List<Integer> list){
            if(root == null){
                return;
            }
    
            // 不用减枝,因为有负数
    //        if(target - root.val < 0){
    //            return;
    //        }
    
            // 到最后一个节点就该判断了,要不然下面到递归会重复两次
            if(root.left == null && root.right == null && target - root.val == 0){
                list.add(root.val);
                res.add(new ArrayList<>(list));
                list.remove(list.size() - 1);
                return;
            }
    
            list.add(root.val);
            dfs(root.left, target - root.val, list);
            dfs(root.right,target - root.val, list);
            list.remove(list.size() - 1);
        }
    }
    

    相关文章

      网友评论

          本文标题:剑指 Offer 第34题:二叉树中和为某一值的路径

          本文链接:https://www.haomeiwen.com/subject/pznbbrtx.html