剑指offer刷题记录30--二叉树中和为某一值的路径

在这里插入图片描述
题目分析

本问题是典型的二叉树方案搜索问题,使用回溯法解决,其包含先序遍历 + 路径记录两部分

先序遍历:按照“根、左、右”的顺序,遍历树的所有节点。
路径记录:在先序遍历中,记录从根节点到当前节点的路径。当路径为 ① 根节点到叶节点形成的路径 且 ② 各节点值的和等于目标值 sum 时,将此路径加入结果列表。
在这里插入图片描述
算法流程

pathSum(root, sum) 函数:

初始化:结果列表 res ,路径列表 path。
返回值: 返回 res 即可。

递归终止条件:若节点node 为空,则直接返回。

递推工作:

  1. 路径更新: 将当前节点值 node.val 加入路径 path ;
  2. 目标值更新: sum = sum - node.val(即目标值 从 sum 减至 000 );
  3. 路径记录: 当 ① node 为叶节点 且 ② 路径和等于目标值 ,则将此路径 path 加入 res 。
  4. 先序遍历: 递归左 / 右子节点。
  5. 路径恢复: 向上回溯前,需要将当前节点从路径 path 中删除,即执行 path.pop() 。

代码如下:

在这里插入图片描述

在这里插入图片描述
参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值