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

二叉树的路径总和问题(递归遍历,回溯算法)

112. 路径总和 - 力扣(LeetCode)

class Solution {
private:    bool traversal(TreeNode*cur,int count){if(!cur->left&&!cur->right&&count==0){return true;}if(!cur->left&&!cur->right){return false;}if(cur->left){count-=cur->left->val;if(traversal(cur->left,count)){return true;}count+=cur->left->val;}if(cur->right){count-=cur->right->val;if(traversal(cur->right,count)){return true;}count+=cur->right->val;}return false;}
public:bool hasPathSum(TreeNode* root, int targetSum) {if(root==NULL){return false;}return traversal(root,targetSum-root->val);}
};

 这道题要寻找是否有一个从根节点到叶子节点的路径的和与目标值相等,我们可以采用遍历二叉树来依次减掉所有的值来判断最后是否为0。

递归的终止条件:如果遇到叶子节点(节点的左右子树都为空),而且count值减到0,则返回true,反之,则返回false。

递归逻辑:在遍历到一个节点时,如果节点的左节点不为空,递归循环这个函数,如果函数的返回值为true,则说明在这条路径上是符合要求的。如果右节点不为空,与左节点的处理方式相同。但在每次左右节点的判断之后,都要将减掉的值加回来,这样才能让count的值回溯回去,去遍历新路径的和。

如果以上所有条件都不满足,则之间返回false。

相关文章:

  • 小米MiMo-7B大模型:解锁推理潜力的新传奇!
  • 安凯微以创新之芯,赋能万物智能互联新时代
  • 住宅代理与数据中心代理有什么区别
  • 正点原子STM32H743单片机实现ADC多通道检测
  • 0.安装两个版本的JDK8和JDK17并配置环境变量
  • StreamingLLM:让LLM拥有无限长生成能力
  • dubbo泛化调用时transient字段失效问题
  • Queue系列之SynchronousQueue源码分析:原理剖析与实战对比
  • 【默子速报】DeepSeek新模型 Prover-V2 报告解读
  • 从Oculus到Meta:Facebook实现元宇宙的硬件策略
  • 二、OrcaSlicer用户预设
  • 电容的作用
  • 对js的Date二次封装,继承了原Date的所有方法,增加了自己扩展的方法,可以实现任意时间往前往后推算多少小时、多少天、多少周、多少月;
  • 使用atomic实现无锁方式的全局变量访问
  • 借助电商 API 接口实现电商平台商品数据分析的详细步骤分享
  • Python第四周作业
  • 力扣-数组-238 除自身以外数组的乘积
  • tbb parallel_for 使用教程2之 tbb::blocked_range
  • 【Android】Android签名解析
  • javascript 深拷贝和浅拷贝的区别及具体实现方案
  • 美国季度GDP时隔三年再现负增长,特朗普政府关税政策对美国经济负面影响或将持续
  • 三家“券商系”公募同日变更掌门人,新董事长均为公司股东方老将
  • 魔都眼|静安光影派对五一启幕:苏河湾看徐悲鸿艺术画作
  • 新希望一季度归母净利润4.45亿,上年同期为-19.34亿
  • “人工智能是年轻的事业,也是年轻人的事业”,沪上高校师生畅谈感想
  • 西夏文残碑等文物来沪,见证一段神秘灿烂的历史