当前位置: 首页 > news >正文

学院评估 网站建设整改网站 地区加关键词

学院评估 网站建设整改,网站 地区加关键词,seo网站外链工具,怎样建立一个简单的网站目录112. 路径总和题目递归解递归解#xff0c;其他人的解法迭代解#xff0c;其他人的解法113. 路径总和 II题目递归解递归解#xff0c;参考别人的思路112. 路径总和 题目 给定一个二叉树和一个目标和#xff0c;判断该树中是否存在根节点到叶子节点的路径#xff0c;… 目录112. 路径总和题目递归解递归解其他人的解法迭代解其他人的解法113. 路径总和 II题目递归解递归解参考别人的思路112. 路径总和 题目 给定一个二叉树和一个目标和判断该树中是否存在根节点到叶子节点的路径这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树以及目标和 sum 22 返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5-4-11-2。 递归解 1、函数参数当前树的根结点、当前累积的路径和目标路径和返回值为空 2、终止条件该结点为空 3、单层逻辑如果该结点不为空则在累积路径和上加上该结点的值。如果该结点是叶子结点判断此时的累积路径和与目标路径和是否相同如果相同则将全局变量ifHas改为true认为能够找到路径和为目标值的路径。然后返回父结点回溯到上一个状态参数会自动更正为上一个状态的参数。接下来就是按顺序对该结点的左右孩子进行遍历 这个思路是有问题的因为它只在叶子结点之后才回溯这是不合理的但是也能AC。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:bool ifHasfalse;void traversal(TreeNode* cur,int target,int Mysum){if(curNULL) return;if(cur!NULL) Mysumcur-val;//如果是叶子结点则进行比较if(cur-leftNULL cur-rightNULL){//如果和目标结果相同if(Mysum target) ifHastrue;return;}if(cur-left){traversal(cur-left,target,Mysum);}if(cur-right){traversal(cur-right,target,Mysum);}return ;}bool hasPathSum(TreeNode* root, int sum) {//if(root NULL) return false;int Mysum0;traversal(root,sum,Mysum);return ifHas;} };递归解其他人的解法 1、函数参数、返回值确定 之前有个结论如果需要搜索整棵二叉树那么递归函数就不要返回值如果要搜索其中一条符合条件的路径递归函数就需要返回值因为遇到符合条件的路径就要及时返回。 本题并不需要遍历整棵树所以递归函数需要返回值可以用bool类型表示。 bool traversal(TreeNode* cur,int count) 2、终止条件确定 在如何统计一条路径和的方法上代码随想录使用递减的方法让计数器count初始为目标和然后每次减去遍历路径结点上的数值。如果最后count0同时到了叶子结点的话说明了找到目标和。如果遍历到了叶子结点cout不为0就是没找到 if(!cur-left !cur-right count 0) return true; //遇到叶子结点并且计数为0 if(!cur-left !cur-right) return false; //遇到叶子结点没有找到合适的边直接返回3、确定单层递归的逻辑 因为终止条件是判断也自己诶单所以递归过程中就不要让空结点进入递归了。 递归函数的返回值为true的话说明了找到了合适的路径应该立刻返回 if(cur-left) {count -cur-left-val;//遇到叶子结点返回true则直接返回trueif(traversal(cur-left,count)) return true;count cur-left-val; //回溯撤销处理结果 } if(cur-right) {count -cur-right-val;//遇到叶子结点返回true则直接返回trueif(traversal(cur-right,count)) return true;count cur-right-val; //回溯撤销处理结果 } return false;class Solution { public:bool traversal(TreeNode* cur,int count) {if(!cur-left !cur-right count 0) return true; //遇到叶子结点并且计数为0if(!cur-left !cur-right) return false; //遇到叶子结点没有找到合适的边直接返回if(cur-left){count -cur-left-val;//遇到叶子结点返回true则直接返回trueif(traversal(cur-left,count)) return true;count cur-left-val; //回溯撤销处理结果}if(cur-right){count -cur-right-val;//遇到叶子结点返回true则直接返回trueif(traversal(cur-right,count)) return true;count cur-right-val; //回溯撤销处理结果}return false;}bool hasPathSum(TreeNode* root, int sum) {if(root NULL) return false;return traversal(root,sum-root-val);} };迭代解其他人的解法 如果使用栈模拟递归的话对于回溯如何处理 此时栈里面的一个元素不仅要记录该结点指针还要记录从头结点到该结点的路径数值总和。 这里使用pair结构来存放栈里面的元素。第一次用这个结构 定义为 pairTreeNode*,int pair结点指针路径数值 为栈中的一个元素。 使用栈模拟前序遍历; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:bool hasPathSum(TreeNode* root, int sum) {if(root NULL) return false;//此时栈里面要放的是pair结点指针路径数值stackpairTreeNode*,int st;st.push(pairTreeNode*,int(root,root-val));while(!st.empty()){pairTreeNode*,int node st.top();st.pop();//如果这个结点是叶子结点同时该结点的路径数值等于sum那么就返回trueif(!node.first-left !node.first-right sum node.second ) return true;//右结点压进去一个结点的时候将该结点的路径数值也记录下来if(node.first-right){st.push(pairTreeNode*,int(node.first-right,node.secondnode.first-right-val));}//右结点压进去一个结点的时候将该结点的路径数值也记录下来if(node.first-left){st.push(pairTreeNode*,int(node.first-left,node.secondnode.first-left-val));}}return false;} };113. 路径总和 II 题目 给定一个二叉树和一个目标和找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 递归解 同样的道理Mysum作为函数参数每次返回的时候会自动更正不需要手动回溯。 完成一次子结果就将子结果送入paths中。 path需要手动回溯。 path.push_back(cur-left-val);traversal(cur-left,target,Mysum);path.pop_back();同时需要注意在一开始要将根结点送入path中因为在我们的递归函数中只对左右孩子进行push_back() class Solution { public:vectorvectorint paths;vectorint path;void traversal(TreeNode* cur,int target,int Mysum){if(curNULL) return;if(cur!NULL){Mysumcur-val;} //如果是叶子结点则进行比较if(cur-leftNULL cur-rightNULL){//如果和目标结果相同if(Mysum target){paths.push_back(path);}return;}if(cur-left){path.push_back(cur-left-val);traversal(cur-left,target,Mysum);path.pop_back();}if(cur-right){path.push_back(cur-right-val);traversal(cur-right,target,Mysum);path.pop_back();}return ;}vectorvectorint pathSum(TreeNode* root, int sum) {if(rootNULL) return {};int Mysum0;path.push_back(root-val);traversal(root,sum,Mysum);return paths;} };递归解参考别人的思路 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { private:vectorvectorint paths;vectorint path;//递归函数不需要返回值因为我们要遍历整个树void traversal(TreeNode* cur,int count){if(!cur-left !cur-right count 0) //遇到了叶子结点且找到了和为sum的路径{paths.push_back(path);return;}if(!cur-left !cur-right ) return;if(cur-left){path.push_back(cur-left-val);count-cur-left-val;traversal(cur-left,count);countcur-left-val;path.pop_back();}if(cur-right){path.push_back(cur-right-val);count-cur-right-val;traversal(cur-right,count);countcur-right-val;path.pop_back();}return;} public:vectorvectorint pathSum(TreeNode* root, int sum) {paths.clear();path.clear();if(rootNULL) return paths;path.push_back(root-val);traversal(root,sum-root-val);return paths;} };工程实践上一定要clear但是由于力扣后台测试数据每次都是新new一个对象
http://www.yutouwan.com/news/92507/

相关文章:

  • 小型教育网站开发做网站都用什么软件
  • 自己做的博客网站表白网站制作代码
  • 怎样查看网站是用什么cms_做的女生学计算机哪个专业简单
  • 用drupal做的网站wordpress 注册用户 邮件
  • 企业运营网站建设求职简历模板免费
  • 网站备案号几位数字 沪长沙简界网络科技有限公司
  • 做外贸的网站域名怎么买网站开发技术试验总结
  • godaddy 上传网站Wordpress plan
  • 百度怎么做网站排名成都知名网络营销公司
  • 俄罗斯免费网站推广富阳网站建设报价
  • 深圳福田区是富人区吗seo排名怎么样
  • php mysql购物网站开发中国移动的5G网站建设给了谁
  • html网页制作企业类网站局域网建设网站如何访问
  • 销售网站建设赚钱吗近期国内新闻热点事件
  • 一般网站使用什么做的郴州有什么好玩的地方
  • 搭建网站架构是什么意思百度打广告收费表
  • 北京网站优化流程海尔电商网站建设方案
  • 网站建设论文html格式手机端网站html好看的模板
  • 网站总浏览量企业文化ppt模板免费
  • 常州网站建设外包杭州滨江网站建设
  • 企业网站的信息内容包括什么诸暨市建设局网站
  • 国外做外贸哪个网站好些科技馆
  • 顶尖手机网站建设济宁融合百度推广公司
  • 青羊区企业网站建设策划爱站网长尾关键词挖掘工具下载
  • 网站在哪里备案网站自适应屏幕
  • 做网站开发需要什么手机上怎么设计广告图片
  • 产品宣传网站的重点保定哪做网站好
  • 王者荣耀官方网站广东网站设计招工.
  • 建自己的网站用多少钱成都网站外包优化公司
  • 长沙好的网站建设公司深圳外贸10强公司