二叉树中和为某一值的路径

这篇博客介绍了如何在二叉树中找出节点值之和等于给定整数的路径。通过先序遍历策略,遍历每个节点并判断路径是否满足条件。在代码实现中,需要注意静态变量的使用以保存路径,并在递归过程中正确处理路径的回退。文章提供了测试用例和关键细节解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)

二:解题思路

如下图所示的例子,给定了二叉树与整数22,则可以打印两条路径。第一条10,5,7、第二条10,12

题目中定义路径:从树的根节点开始一直到叶子结点所经过的结点形成一条路径

也就是说每条满足条件的路径都是以根节点开始,叶子结点结束,如果想得到所有根节点到叶子结点的路径(不一一定满足和为某整数的条件),需要遍历整棵树,还要先遍历根节点,所以采用先序遍历

以上面的树模拟先序遍历的过程

10-->5-->4  已近到达叶子结点,不满足要求22,因此该路径访问结束,需要访问下一个路径

因为在访问节点的过程中,我们并不知道该路径是否满足要求,所以我们每访问一个节点就要记录该结点

访问下有一个结点前,要先从结点4退回到结点5,再访问下一个结点7,因为4不在去往7的路径上,所以要在路径中将4删除

10-->5-->7  满足要求,保存该路径

访问下一个结点,从结点7回到结点5再回到结点10

10-->12,满足要求,保存该路径

总结就是:
* FindPath功能:在给定root子树中,找出合理的路径以达到目标和target 
  * FindPath实质:二叉树的深度优先遍历 + 每次遍历均判断是否达到条件,若是则输出
  * 大致策略
  *&nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值