パスの合計II


問題二分木のルートノードルートと整数のターゲットとtargetSumを指定し、パスの合計が指定されたターゲットの合計に等しいルートノードからリーフノードまでのすべてのパスを見つけます。

リーフノードは、子ノードを持たないノードです。

ここに画像の説明を挿入

分析:
深さ優先探索法を使用して、ルートノードからリーフノードまでの各パスを列挙できます。リーフノードにトラバースし、パスの合計が単なるターゲットの合計である場合、条件を満たすパスが見つかりました。

コード:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */

class Solution {
    
    
    public List<List<Integer>> pathSum(TreeNode root, int sum) {
    
    
      List<List<Integer>> ans = new ArrayList<>();
      List<Integer> path=new ArrayList<>();
        int path_value=0;
        dfs(root,sum,path_value,path,ans);
        return ans;  
    }
    public void dfs(TreeNode root, int sum,int path_value,List<Integer> path, List<List<Integer>> ans){
    
      
       if(root==null){
    
    
           return;
       } 
        path_value+=root.val;
        path.add(root.val);
        if(root.left==null && root.right==null && path_value==sum){
    
    
            ans.add(new ArrayList<Integer>(path));
        }
        dfs(root.left,sum,path_value,path,ans);
        dfs(root.right,sum,path_value,path,ans);
        path_value-=root.val;
        path.remove(path.size()-1);
        }
    }



出典:LeetCode
リンク:https ://leetcode-cn.com/problems/path-sum-ii
著作権はLeetCodeが所有しています商用転載の場合は、公認機関にご連絡ください。非商用転載の場合は、出典を明記してください。

おすすめ

転載: blog.csdn.net/weixin_42120561/article/details/114372985