LeetCode 매일 1문제: 두 갈래 나무 경로와 2

1339 단어

문제 설명


Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum. For example: Given the below binary tree and sum = 22, 5/ 4 8// 11 13 4/\/ 7 2 5 1 return [ [5,4,11,2], [5,8,4,5] ]

문제 분석


이전 문제와 마찬가지로 귀속을 사용하면 되지만 중간 결과를 저장하고 DFS로 마지막 줄을 검색하여 덧붙여야 합니다list.remove(list.size() - 1);//

코드 구현

public ArrayList> pathSum(TreeNode root, int sum) {
        ArrayList> result = new ArrayList<>();
        ArrayList list = new ArrayList<>();
        getPath(root, sum, list, result);
        return result;
    }

    private void getPath(TreeNode root, int sum, ArrayList list, ArrayList> result) {
        if (root == null) return;
        list.add(root.val);
        if (root.val == sum && root.left == null && root.right == null) {
            result.add(new ArrayList(list));
        }
        if (root.left != null) {
            getPath(root.left, sum - root.val, list, result);
        }
        if (root.right != null) {
            getPath(root.right, sum - root.val, list, result);
        }
        list.remove(list.size() - 1);// 
    }

좋은 웹페이지 즐겨찾기