首页 > 代码库 > Path Sum II
Path Sum II
题目
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 andsum = 22
,5 / 4 8 / / 11 13 4 / \ / 7 2 5 1return
[ [5,4,11,2], [5,8,4,5] ]
方法
和问题一的不同是:需要找出所有的。使用subList来保存当前的元素,如果递归返回之后,需要删除最后一个元素。满足条件后新建一个List,元素为当前subList中的元素。public void preOrder(TreeNode node, int sum, int tempSum, List<Integer> subList, List<List<Integer>> list ) { if (node != null) { tempSum += node.val; subList.add(node.val); if (node.left == null && node.right == null) { if (tempSum == sum) { list.add(new ArrayList<Integer>(subList)); } } preOrder(node.left, sum, tempSum, subList, list); preOrder(node.right, sum, tempSum, subList, list); subList.remove(subList.size() - 1); } } public List<List<Integer>> pathSum(TreeNode root, int sum) { List<List<Integer>> list = new ArrayList<List<Integer>>(); List<Integer> subList = new ArrayList<Integer>(); preOrder(root,sum,0,subList,list); return list; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。