网站建设费是多少,开发项目外包,海拉尔做自己的网站,网站搭建与网站建设题目
给你二叉树的根节点 root 和一个整数目标和 targetSum #xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
叶子节点 是指没有子节点的节点。
示例 1#xff1a; 输入#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22…题目
给你二叉树的根节点 root 和一个整数目标和 targetSum 找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
叶子节点 是指没有子节点的节点。
示例 1 输入root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22
输出[[5,4,11,2],[5,8,4,5]]示例 2 输入root [1,2,3], targetSum 5
输出[]示例 3
输入root [1,2], targetSum 0
输出[]
题解
首先定义一个List path用来存放每一条路径再定义一个List ret用来返回结果
边界条件是根结点为空就退出递归
如果root.left和root.right为空并且和减到了0就增加路径
最后回溯要将当前节点删除
/*** 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 {LinkedListInteger path new LinkedList();LinkedListListInteger ret new LinkedList();public ListListInteger pathSum(TreeNode root, int targetSum) {recur(root, targetSum);return ret;}public void recur(TreeNode root, int tar) {if (root null) {return;}path.add(root.val);tar - root.val;if (root.left null root.right null tar 0) {ret.add(new LinkedListInteger(path));}recur(root.left,tar);recur(root.right,tar);path.removeLast();}
}