二叉树的路径和

来源:互联网 发布:网络信息发布管理办法 编辑:程序博客网 时间:2024/06/01 08:04
/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } */public class Solution {    /**     * @param root the root of binary tree     * @param target an integer     * @return all valid paths     */    private List<Integer> middleList = new ArrayList<Integer>();    private int count = 0;    private int target = 0;    public List<List<Integer>> binaryTreePathSum(TreeNode root, int target) {        // Write your code here        List<List<Integer>> result = new ArrayList<List<Integer>>();        this.target = target;        traversalTree(root, result);        return result;    }    private void traversalTree(TreeNode node , List<List<Integer>> result){        if (node == null){            return;        }        //前序遍历        int value = node.val;        middleList.add(value);        count += value;         if (count == target&&(node.left == null || node.right == null)){            result.add(new ArrayList(middleList));            count -= value;            middleList.remove(middleList.lastIndexOf(value));            return;        }        traversalTree(node.left, result);        traversalTree(node.right, result);        middleList.remove(middleList.lastIndexOf(value));        count -= value;    }}
原创粉丝点击