深圳制作网站培训,温州学校网站建设,网络营销的特点分别是,长沙企业名录大全 湖南113. 路径总和 II
给你二叉树的根节点 root 和一个整数目标和 targetSum #xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
叶子节点 是指没有子节点的节点。
示例 1#xff1a; 输入#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], t…113. 路径总和 II
给你二叉树的根节点 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
输出[]提示
树中节点总数在范围 [0, 5000] 内-1000 Node.val 1000-1000 targetSum 1000 这题呢其实也比较简单但是有几个比较坑的点需要在这里说一下以防各位入坑~
先看代码
class Solution {
public:vectorvectorint res;vectorint temp;void getAllRoute(TreeNode* root, int targetSum, int sum) {if (root nullptr)//这里一定要先判断不然sum root-val会报错return;
//下面两行代码一定要放到if判断的前面不然部分样例会报错为什么这么写各位应该是清楚地~sum root-val;temp.push_back(root-val);if (root-left nullptr root-right nullptr sum targetSum) {//判断是否到了叶子结点并且当前值是否等于目标值res.push_back(temp);}getAllRoute(root-left, targetSum, sum);getAllRoute(root-right, targetSum, sum);temp.pop_back();sum - root-val;}vectorvectorint pathSum(TreeNode* root, int targetSum) {int sum 0;if (root nullptr)return res;getAllRoute(root, targetSum, sum);return res;}
};
看完代码如果你觉得恍然大悟那恭喜你算是对回溯和深搜学的比较好的但是如果看完代码觉得还是很懵的建议再去看看回溯理解其中的含义再做几道题就明白了深搜这里其实主要就是为了遍历整棵树这个没啥可说的不理解的评论区评论或者私信哦~